博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
有关Collection中sort排序
阅读量:7118 次
发布时间:2019-06-28

本文共 5738 字,大约阅读时间需要 19 分钟。

Collections中sort()方法如果比较的是对象

package com.huan.yu;import java.util.ArrayList;import java.util.Collections;import java.util.Comparator;import java.util.HashMap;import java.util.Iterator;import java.util.List;import java.util.Map;import java.util.Set;public class Demo {	public static void main(String[] args) {		List
customerOrders = new ArrayList(); Map map = new HashMap(); CustomerOrder customerOrder = new CustomerOrder((long) 1,"huanyu1", "xiaozhang", "xiaoli", 1); CustomerOrder customerOrder1 = new CustomerOrder((long) 2,"huanyu1", "xiaozhang", "xiaoli", 4); CustomerOrder customerOrder2 = new CustomerOrder((long) 3,"huanyu1", "xiaozhang", "xiaoli", 5); CustomerOrder customerOrder3 = new CustomerOrder((long) 4,"huanyu", "xiaozhang", "xiaoli", 6); CustomerOrder customerOrder4 = new CustomerOrder((long) 5,"huanyu", "xiaozhang", "xiaoli", 7); CustomerOrder customerOrder5 = new CustomerOrder((long) 6,"huanyu2", "xiaozhang", "xiaoli", 9); customerOrders.add(customerOrder); customerOrders.add(customerOrder1); customerOrders.add(customerOrder2); customerOrders.add(customerOrder3); customerOrders.add(customerOrder4); customerOrders.add(customerOrder5); System.err.println(customerOrders.size()); List list = new ArrayList<>(); List potentialCustomerOrdersl=new ArrayList<>(); potentialCustomerOrdersl.addAll(customerOrders); for (CustomerOrder c : customerOrders) { String[] str = new String[3]; str[0] = c.getAccountNumber(); str[1] = c.getCustomerName(); str[2] = c.getBuyerAddress(); potentialCustomerOrdersl = (List) map.get(str); map.put(str, list); } List customerOrderEntryList = new ArrayList(); if (map.size() > 0) { customerOrderEntryList.addAll(map.entrySet()); for (Iterator iter = customerOrderEntryList.iterator(); iter.hasNext();) { Map.Entry customerOrderEntry = (Map.Entry) iter.next(); List potentialCustomerOrders = (List) customerOrderEntry.getValue(); Collections.sort(potentialCustomerOrders, new Comparator() { public int compare(Object obj1, Object obj2) { CustomerOrder customerOrder1 = (CustomerOrder) obj1; CustomerOrder customerOrder2 = (CustomerOrder) obj2; return customerOrder1.getCustomerOrderno().compareTo(customerOrder2.getCustomerOrderno()); } }); } } Collections.sort(customerOrderEntryList, new Comparator() { public int compare(Object obj1, Object obj2) { Map.Entry entry1 = (Map.Entry) obj1; Map.Entry entry2 = (Map.Entry) obj2; String[] potentialCustomerOrderInfo1 = (String[]) entry1.getKey(); String accountNumber1 = potentialCustomerOrderInfo1[0]; String customerName1 = potentialCustomerOrderInfo1[1]; String buyerAddress1 = potentialCustomerOrderInfo1[2]; String[] potentialCustomerOrderInfo2 = (String[]) entry2.getKey(); String accountNumber2 = potentialCustomerOrderInfo2[0]; String customerName2 = potentialCustomerOrderInfo2[1]; String buyerAddress2 = potentialCustomerOrderInfo2[2]; if (accountNumber1.compareTo(accountNumber2) > 0) { return 1; } if (accountNumber1.compareTo(accountNumber2) < 0) { return -1; } if (null != customerName1 && null != customerName2) { if (customerName1.compareTo(customerName2) > 0) { return 1; } if (customerName1.compareTo(customerName2) < 0) { return -1; } } if (buyerAddress1.compareTo(buyerAddress2) > 0) { return 1; } if (buyerAddress1.compareTo(buyerAddress2) < 0) { return -1; } return 0; } }); System.err.println(customerOrderEntryList.size()); }}class CustomerOrder { private Long customerOrderno; private String accountNumber; private String customerName; private String buyerAddress; private int age; public CustomerOrder(Long customerOrderno, String accountNumber, String customerName, String buyerAddress, int age) { this.customerOrderno = customerOrderno; this.accountNumber = accountNumber; this.customerName = customerName; this.buyerAddress = buyerAddress; this.age = age; } public String getAccountNumber() { return accountNumber; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public void setAccountNumber(String accountNumber) { this.accountNumber = accountNumber; } public String getCustomerName() { return customerName; } public void setCustomerName(String customerName) { this.customerName = customerName; } public String getBuyerAddress() { return buyerAddress; } public void setBuyerAddress(String buyerAddress) { this.buyerAddress = buyerAddress; } public Long getCustomerOrderno() { return customerOrderno; } public void setCustomerOrderno(Long customerOrderno) { this.customerOrderno = customerOrderno; }} //返回值是数组的形式,并且如果对象一样就会返回一样的值

[[Ljava.lang.String;@1e18a62b=[com.swfarm.biz.chain.bo.CustomerOrder@2da9f009[order id: =4028802d5f9e5000015f9e5ac184001c], com.swfarm.biz.chain.bo.CustomerOrder@6fcdf64a[order id: =4028802d5f9e5000015f9e5ac565001e]],

[Ljava.lang.String;@3d159e0c=[com.swfarm.biz.chain.bo.CustomerOrder@3ae4ad9e[order id: =402882445fc291fb015fc2e78bf900d2], com.swfarm.biz.chain.bo.CustomerOrder@7b427e46[order id: =402882445fe289dd015fe2a98c32001d]],

[Ljava.lang.String;@6445607c=[com.swfarm.biz.chain.bo.CustomerOrder@4a7064e2[order id: =40288244615516b301615518c5e2002f], com.swfarm.biz.chain.bo.CustomerOrder@18ef579c[order id: =40288244615516b301615518c8460033]],

[Ljava.lang.String;@6c1a052=[com.swfarm.biz.chain.bo.CustomerOrder@960cf8e[order id: =4028824460811dc001608126edd80002], com.swfarm.biz.chain.bo.CustomerOrder@32da7871[order id: =402882446081697d0160816c23ca0002], com.swfarm.biz.chain.bo.CustomerOrder@25195ccc[order id: =402882446081697d016081761b560006]]]

转载于:https://www.cnblogs.com/liushisaonian/p/8588422.html

你可能感兴趣的文章
GCC依赖库顺序问题
查看>>
Spark源码分析之二:Job的调度模型与运行反馈
查看>>
C#——await与async实现多线程异步编程
查看>>
tomcat集群的failover机制
查看>>
分布式事务及分布式系统一致性解决方案
查看>>
Android Demo---如何敲出圆角的Button+圆角头像
查看>>
如何让隐藏在大数据背后的价值发挥出来?
查看>>
有了 Docker,用 JavaScript 框架开发的 Web 站点也能很好地支持网络爬虫的内容抓取...
查看>>
以太坊是什么鬼?!媲美比特币的加密币大揭秘
查看>>
IBM推出跨境支付区块链网络,企业级区块链技术进一步升级
查看>>
快速计算Distinct Count
查看>>
企业平均每年遭遇9起有针对性攻击
查看>>
【Solidity】1.一个Solidity源文件的布局 - 深入理解Solidity
查看>>
关于Java异常
查看>>
如何找到一个好的Joomla主机提供商
查看>>
[译] RxJava 中的错误处理
查看>>
表格存储如何实现跨区域的容灾
查看>>
Dockerfile最佳实践(二)
查看>>
QUICKBMS GUIDE
查看>>
T-SQL Enhancement in SQL Server 2005[下篇]
查看>>