java list多字段排序_java中list通过多条件排序
实现的效果类似于这样,首先通过一级类别id排序,其次是二级类别,最后是二级类别中的各项合计排序; 方法一/*** 单品容器排序** @param productSellStatList* @return*/private void getSortList(List productSellStatList) {Collections.sort(productSellStatList, new Com
实现的效果类似于这样,首先通过一级类别id排序,其次是二级类别,最后是二级类别中的各项合计排序;
方法一
/**
* 单品容器排序
*
* @param productSellStatList
* @return
*/
private void getSortList(List productSellStatList) {
Collections.sort(productSellStatList, new Comparator() {
@Override
public int compare(ProductSellStat o1, ProductSellStat o2) {
if (o1.getParentProductTypeID() < o2.getParentProductTypeID()) {// 一级类目
return -1;
} else if (o1.getParentProductTypeID() == o2.getParentProductTypeID()) { // 一级类目
if (o1.getProductTypeID() < o2.getProductTypeID()) {
return 1;
} else if (o1.getProductTypeID() == o2.getProductTypeID()) { // 二级类目
if (o1.getRowTotal() > o2.getRowTotal()) { // 通过合计
return -1;
} else if (o1.getRowTotal() == o2.getRowTotal()) {// 通过合计
return 0;
} else {
return 1;
}
} else {
return 1;
}
} else {
return 1;
}
}
});
}
方法二
//productSellStatList为要排序的集合
List sortProductSellStatList = new ArrayList(productSellStatList.size()) ;
Map> tempMap = new HashMap>() ;
Comparator comparator = new TotalSaleComparator() ;
for (ProductSellStat p : productSellStatList) {
if (tempMap.isEmpty()) {
List tempList = new ArrayList() ;
tempList.add(p);
tempMap.put(p.getProductTypeID(), tempList) ;
} else {
if (tempMap.containsKey(p.getProductTypeID())) {
tempMap.get(p.getProductTypeID()).add(p);
} else {
// 为lis排序
for (List pList : tempMap.values()) {
Collections.sort(pList, comparator); // 排序
sortProductSellStatList.addAll(pList) ;
}
tempMap.clear();
}
}
if (tempMap.isEmpty()) {
List tempList = new ArrayList() ;
tempList.add(p);
tempMap.put(p.getProductTypeID(), tempList) ;
}
}
// 处理最后的内容
if (!tempMap.isEmpty()) {
// 为lis排序
for (List pList : tempMap.values()) {
Collections.sort(pList, comparator); // 排序
sortProductSellStatList.addAll(pList) ;
}
tempMap.clear();
}
productSellStatList.clear(); // 清空集合,方便垃圾回收
/**
* 销量汇总排序
*/
public class TotalSaleComparator implements Comparator {
@Override
public int compare(ProductSellStat o1, ProductSellStat o2) {
if (o1.getRowTotal() > o2.getRowTotal()) {
return -1;
} else if (o1.getRowTotal() == o2.getRowTotal()) {
return 0;
} else {
return 1;
}
}
}
更多推荐
所有评论(0)