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