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

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

我有一个SQL Server项目表,每个项目都包含一个不是id的序列号。序列号可以是1、2、3、4等等。。。items表包含一个链接字段和一个分组字段。如果项目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);
        }
    }
}

假设您有一个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()));