gpt4 book ai didi

Java对象列表按未排序的特定对象排序

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:32:12 24 4
gpt4 key购买 nike

我有以下试图对其进行排序的 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());

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

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

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

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

关于Java对象列表按未排序的特定对象排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52407782/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com