如何对arraylist执行一系列排序操作(多个排序条件) [英] How to perform a series of sort operation on arraylist (multiple sort criteria)
本文介绍了如何对arraylist执行一系列排序操作(多个排序条件)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个arrayList的对象,我想对这个列表运行一系列的排序操作。我想先按名字排序,如果两个名字相同,例如通过id排序。
如何实现它?
这是我的代码
比较器< 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 return 1;
if(num1> num2)
return -1;
return 0;
}
}
这个代码排序列表由 id
,但是我想再次排序 name
解决方案
Collections.sort(myList,new Comparator(){
@Override
public int compare(Object o1,Object o2)
{
//这里写你的订购代码
return 0;
}
}
只需填写所需的比较代码,Java就会为您处理排序。 p>
编辑更新问题:
比较器< 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 return 1;
else if(num1> num2)
return -1;
else
return ticket1.getName()。compare(ticket2.getName());
}
}
I have an arrayList of objects and I want to run a series of sort operations on this list. I would want to sort them by first by name, and if two names are same than sort them by id, for example.
How can i implement it?
This is my code
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;
}
}
This code sorting list by id
, but again i want to sort on name
解决方案
Collections.sort(myList, new Comparator() {
@Override
public int compare(Object o1, Object o2)
{
// write your ordering code here
return 0;
}
});
Just fill in the code for the comparison you want and Java will handle the sorting for you.
Edit for updated question:
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;
else if (num1>num2)
return -1;
else
return ticket1.getName().compare(ticket2.getName());
}
}
这篇关于如何对arraylist执行一系列排序操作(多个排序条件)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文