场景:

  List里面的对象是订单的节点,比如我们快递的物流状态,这个是需要有序的,所以需要根据订单号进行分组排序。

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map; public class GroupSortTest {
public static void main(String[] args) { List<Order> list = new ArrayList<Order>();
Order o1 = new Order("10086","3",(long) 1008603);
Order o2 = new Order("10086","2",(long) 1008602);
Order o3 = new Order("10086","1",(long) 1008601);
Order o4 = new Order("10010","1",(long) 1001001);
Order o5 = new Order("10000","3",(long) 1000003);
Order o6 = new Order("10010","3",(long) 1001003);
Order o7 = new Order("10000","1",(long) 1000001);
Order o8 = new Order("10000","2",(long) 1000002);
Order o9 = new Order("10010","2",(long) 1001002); list.add(o1);
list.add(o2);
list.add(o3);
list.add(o4);
list.add(o5);
list.add(o6);
list.add(o7);
list.add(o8);
list.add(o9); Map<String, List<Order>> map = OrderSortByGroup(list); for(Map.Entry<String, List<Order>> entry : map.entrySet()){
for(Order o : entry.getValue() ){
System.out.println(entry.getKey() +"--"+o.getSeq()+"--"+o.getStatusId());
}
} } public static Map<String, List<Order>> OrderSortByGroup(List<Order> list){
Map<String, List<Order>> map = new HashMap<String, List<Order>>();
for(Order order : list) {
List<Order> staList = map.get(order.orderNo);
if(staList==null){
staList = new ArrayList<Order>();
}
Order od = new Order();
od.setSeq(order.seq);od.setStatusId(order.statusId);
staList.add(od); Collections.sort(staList, new Comparator<Order>() {
@Override
public int compare(Order o1, Order o2) {
return o1.getSeq().compareTo(o2.getSeq());
}
}); map.put(order.orderNo, staList);
}
return map;
} } class Order {
String orderNo; //订单号
String seq; //订单节点序号
Long statusId; //订单节点主键 public Order() {} public Order(String orderNo, String seq, Long statusId) {
super();
this.orderNo = orderNo;
this.seq = seq;
this.statusId = statusId;
} public String getOrderNo() {
return orderNo;
}
public void setOrderNo(String orderNo) {
this.orderNo = orderNo;
}
public String getSeq() {
return seq;
}
public void setSeq(String seq) {
this.seq = seq;
}
public Long getStatusId() {
return statusId;
}
public void setStatusId(Long statusId) {
this.statusId = statusId;
}
}

最新文章

  1. 行为驱动开发iOS &lt;收藏&gt;
  2. win7系统下 自带的定时关机
  3. 用Python生成组织机构代码,附源码
  4. smarty访问数组中的数据,如果是关联数组直接用点.
  5. Google Code Jam 2010 Round 1A Problem A. Rotate
  6. soap的简单实现(PHP)
  7. intent.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
  8. rem和em和px vh vw和% 移动端长度单位
  9. java.util.zip - Recreating directory structure(转)
  10. NTFS权限设置时卡死
  11. SSH整合(一)hibernate+spring
  12. 懒人的小技巧, 批处理修改IP
  13. C++ 头文件系列(stdexcept)
  14. 温故而知新-set
  15. Xcode中的调试工具栏简介
  16. LCT总结——概念篇+洛谷P3690[模板]Link Cut Tree(动态树)(LCT,Splay)
  17. 记一次js之button问题
  18. MATLAB读写Excel文件中的数据
  19. 如何检查 IP是否冲突了
  20. OGNL动态实现result

热门文章

  1. (原)String类两种实例化的区别
  2. 安装python爬虫scrapy踩过的那些坑和编程外的思考
  3. MySQL里面的子查询实例
  4. 输入你的性别,身高及体重,判断你的身材是否标准。(用if......else语句)
  5. Java初学(四)
  6. Java初学(六)
  7. 锋利的jQuery-2--一个显示和隐藏的例子,主要看写法
  8. 【转】websocket协议规范
  9. ES6的promise对象研究
  10. 看了让人笑了很多很多次的NB的痔疮经历