加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

Java对象列表按特定对象排序,而不是排序

发布时间:2020-12-15 04:50:02 所属栏目:Java 来源:网络整理
导读:我有以下 JSONArray试图对它进行排序.因此,为了将我的JSONArray转换为ArrayList,然后对它们进行排序并转换回JSONArray. 请找到最初的JSONArray(不在排序顺序中). [ { "code":"TE-7000-8003-W","id":"13342",},{ "code":"TE-7000-8003","id":"13163",{ "code"
我有以下 JSONArray试图对它进行排序.因此,为了将我的JSONArray转换为ArrayList,然后对它们进行排序并转换回JSONArray.

请找到最初的JSONArray(不在排序顺序中).

[  
   {  

      "code":"TE-7000-8003-W","id":"13342",},{  
      "code":"TE-7000-8003","id":"13163",{  
      "code":"TE-7000-8003-WK","id":"11573",{  
      "code":"TE-7000-8003S","id":"11565",{  
      "code":"TE-7000-8003-K","id":"11557",}
]

请找到我的下面的代码,它将我的JSONArray转换为ArrayList并对它们进行排序.

Item item=null;
List<Item> newItemList = new ArrayList<Item>();
for (int i=0;i<resultJSONArray.length();i++) {
    JSONObject jobj = resultJSONArray.getJSONObject(i);
    item = new Item();
    item.setId(jobj.optString("id"));
    item.setCode(jobj.optString("code"));
    newItemList.add(item);
}

 newItemList
  .stream()
  .sorted((object1,object2) -> object1.getCode().compareTo(object2.getCode()));

Iterator<Item> itr = newItemList.iterator();
while(itr.hasNext()) {
    Item item1=itr.next();
    System.out.println("Item----->"+item1.getCode());
}

以下是输出结果,而不是排序顺序

Item----->TE-7000-8003-W
Item----->TE-7000-8003
Item----->TE-7000-8003-WK
Item----->TE-7000-8003S
Item----->TE-7000-8003-K

我期待如下结果:

Item----->TE-7000-8003
Item----->TE-7000-8003S
Item----->TE-7000-8003-K
Item----->TE-7000-8003-W
Item----->TE-7000-8003-WK

解决方法

创建流并使用已排序时,不要更改实际列表.所以你做云

List<Item> sortedItemList =newItemList
.stream()
.sorted((object1,object2) -> object1.getCode().compareTo(object2.getCode()))
.collect(Collectors.toList());

或者更好地使用sort方法对列表进行排序

newItemList
.sort((object1,object2) -> object1.getCode().compareTo(object2.getCode()));

并且您可以使用Comparator.comparing(Item :: getCode)来替换比较器

newItemList
.sort(Comparator.comparing(Item::getCode));

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读