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<CustomerOrder> 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]]]
浙公网安备 33010602011771号