加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 如何对arraylist执行一系列排序操作(多个排序条件)

发布时间:2020-12-15 04:56:12 所属栏目:Java 来源:网络整理
导读:我有一个对象的arrayList,我想在这个列表上运行一系列的排序操作.我想首先按名称对它们进行排序,如果两个名称相同,则按id排序,例如. 我该如何实现它? 这是我的代码 ComparatorTicket mc;mc = new TicketIdComparator();Collections.sort(tickets,mc);final
我有一个对象的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;



    }
}

这个代码按ID分类列表,但我想再次对名称进行排序

解决方法

Collections.sort(myList,new Comparator() {

     @Override
     public int compare(Object o1,Object o2)
     {
        // write your ordering code here
        return 0;
     }

  });

只需填写您想要的比较代码,Java就会为您处理排序.

编辑更新的问题:

Comparator<Ticket> mc;
mc = new TicketIdComparator();
Collections.sort(tickets,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());
    }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读