java - 如何对arraylist进行一系列排序操作(多种排序条件)

标签 java sorting collections arraylist comparator

我有一个对象数组列表,我想对这个列表运行一系列排序操作。例如,我想首先按名称对它们进行排序,如果两个名称相同则按 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;



    }
}

此代码按 id 排序,但我想再次按 name 排序

最佳答案

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

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));

关于java - 如何对arraylist进行一系列排序操作(多种排序条件),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8212339/

相关文章:

java - JScrollpane 无法正常显示

java - 如何使用 lambda 表达式将条件发送到方法以便尚未对其进行评估?

JavaFX:IntelliJ IDEA Artifacts 抛出 NullPointerException

Swift 4 Conform Comparable 协议(protocol)和排序方法问题

在经典 ASP 中对集合进行排序

arrays - Laravel 5 中 all() 和 toArray() 的区别

java - MySQL-DB 中私钥和公钥的存储

c++ - 广义排序函数和使用 binary_function

scala - 为什么 scala 的集合默认不是 'views'?

c# - 如何获取列表集合的增量