gpt4 book ai didi

Java 按同一字段对项目进行两次排序

转载 作者:行者123 更新时间:2023-12-01 06:22:38 27 4
gpt4 key购买 nike

我有一个项目表(SQL Server),每个项目都包含一个序列号(不是 ID)。序列可以是 1、2、3、4 等...项目表包含一个“链接”字段和一个“分组”字段。如果项目 2 有子项,这些子项的链接字段将填充项目 2 的 id,并且它们的所有兄弟将具有相同的分组代码。例如:

表格项目

id     sequence     link        grouping
10 1 null null
2 2 null null
3 ..1 2 1
4 ..2 2 1
36 ..3 2 1
4 3 null null
25 4 null null
15 5 null null

上表已订购。我将点放在“序列”列中以表明它们是 child 。我想通过java以这种方式排序(必须使用Collections.sort),但我不知道该怎么做。

编辑:我尝试过这个:

public class SequenceComparator implements Comparator<Item> {
@Override
public int compare(Item o1, Item o2) {
String x1 = o1.getSequency().toString();
String x2 = o2.getSequency().toString();
int sComp = x1.compareTo(x2);

if (sComp != 0) {
return sComp;
} else {
x1 = o1.getLink().toString();
x2 = o2.getLink() == null?"":o2.getLink().toString();
return x1.compareTo(x2);
}
}
}

最佳答案

假设您有一个 Item 类,可能会有所帮助

实现比较器类:

class ItemCompare implements Comparator<Item> {

@Override
public int compare(Item o1, Item o2) {
// write comparison logic here like below , it's just a sample
return o1.getID().compareTo(o2.getID());
}
}

并使用它:

List<Item> items = new ArrayList<>();
ItemCompare itemCompare = new ItemCompare();
Collections.sort(items, itemCompare);

如果你使用的是java 8,你可以这样做:

Collections.sort(items, (Item r1, Item r2) ->
r1.getID().compareTo(r2.getID()));

关于Java 按同一字段对项目进行两次排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41980379/

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