如何对arraylist执行一系列排序操作(多个排序标准)

Rom*_*omi 3 java sorting collections arraylist comparator

我有一个对象的arrayList,我想在这个列表上运行一系列的排序操作.我想首先按名称对它们进行排序,如果两个名称相同,则按id排序,例如.

我该如何实现它?

这是我的代码

Comparator<Ticket> mc;
mc = new TicketIdComparator();
Collections.sort(tickets, mc);


final class TicketIdComparator implements Comparator<Ticket>

{

    @Override
    public int compare(Ticket ticket1, Ticket ticket2) {
        String TicketId1 = ((Ticket) ticket1).getNumber();
        String TickedId2 = ((Ticket) ticket2).getNumber();

        int num1=Integer.parseInt(TicketId1);
        int num2 =Integer.parseInt(TickedId2);

        if (num1<num2)
            return 1;
        if (num1>num2)
            return -1;
        return 0;



    }
}
Run Code Online (Sandbox Code Playgroud)

这个代码排序列表id,但我想再次排序name

Pet*_*rey 5

您可以从一组比较器中编写一个Comparator.

public static <T extends Comparable<T>> Comparator<T> comparatorFrom(final Comparator<T>... comparators) {
    return new Comparator<T>() {
        @Override
        public int compare(T o1, T o2) {
            for (Comparator<T> comparator : comparators) {
                final int cmp = comparator.compare(o1, o2);
                if (cmp != 0) return cmp;
            }
            return 0;
        }
    };
}

// you can then use
Arrays.sort(list, comparatorFrom(comp1, comp2, comp3, comp4));
Run Code Online (Sandbox Code Playgroud)