如何对arraylist执行一系列排序操作(多个排序条件) [英] How to perform a series of sort operation on arraylist (multiple sort criteria)

查看:660
本文介绍了如何对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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆