Java按同一字段对项目排序两次
我有一个SQL Server项目表,每个项目都包含一个不是id的序列号。序列号可以是1、2、3、4等等。。。items表包含一个链接字段和一个分组字段。如果项目2有子项,则这些子项的链接字段将填充项目2的id,并且它们的所有兄弟将具有相同的分组代码。例如: 表项Java按同一字段对项目排序两次,java,sorting,collections,Java,Sorting,Collections,我有一个SQL Server项目表,每个项目都包含一个不是id的序列号。序列号可以是1、2、3、4等等。。。items表包含一个链接字段和一个分组字段。如果项目2有子项,则这些子项的链接字段将填充项目2的id,并且它们的所有兄弟将具有相同的分组代码。例如: 表项 id sequence link grouping 10 1 null null 2 2 null null 3
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
上表已订购。我把这些点放在序列栏中,表示他们是孩子。我想通过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());
}
}
你在用Java 7或8做什么?你不应该至少为我们准备一些Java代码吗?这意味着我们也一样,你有一个列表。。。我们是否可以看到列表用作容器链接字段的X类,该字段填充了第2项的代码,该代码是否引用了表的id或表的序列。为了更好地解释,这个例子很少含糊不清
List<Item> items = new ArrayList<>();
ItemCompare itemCompare = new ItemCompare();
Collections.sort(items, itemCompare);
Collections.sort(items, (Item r1, Item r2) ->
r1.getID().compareTo(r2.getID()));