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()); } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |