我有一个项目表(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
上表已经订购。我把点放在“序列”栏中,表明他们是孩子。我想通过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);
}
}
}
答案 0 :(得分:-2)
假设您有一个Item类,可能有帮助
实施Comparator类:
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()));