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
您可以从一组比较器中编写一个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)
归档时间: |
|
查看次数: |
1660 次 |
最近记录: |