zoukankan      html  css  js  c++  java
  • java List分组

    package javaBean;
    
    import java.util.Date;
    
    /**
     * 客户Bean
     *
     * @author 清茶
     * @create 2017-10-26 10:27
     */
    public class CustomerVo {
        private Long id;
        private Long customerId;
        private String customerName;
        private Date date;
    
        public CustomerVo(Long id, Long customerId, String customerName, Date date) {
            this.id = id;
            this.customerId = customerId;
            this.customerName = customerName;
            this.date = date;
        }
    
        public Long getId() {
            return id;
        }
    
        public void setId(Long id) {
            this.id = id;
        }
    
        public Long getCustomerId() {
            return customerId;
        }
    
        public void setCustomerId(Long customerId) {
            this.customerId = customerId;
        }
    
        public String getCustomerName() {
            return customerName;
        }
    
        public void setCustomerName(String customerName) {
            this.customerName = customerName;
        }
    
        public Date getDate() {
            return date;
        }
    
        public void setDate(Date date) {
            this.date = date;
        }
    }
     1 package service;
     2 
     3 import java.util.*;
     4 
     5 /**
     6  * List分组工具
     7  *
     8  * @author 清茶
     9  * @create 2017-10-26 10:28
    10  */
    11 public class ListSortUtil {
    12 
    13     public interface GroupBy<T> {
    14         T groupBy(Object obj);
    15     }
    16 
    17     public static final <T extends Comparable<T>, D> Map<T, List<D>> group(Collection<D> colls, GroupBy<T> gb) {
    18         if (colls == null || colls.isEmpty()) {
    19             System.out.println("分组集合不能为空");
    20             return null;
    21         }
    22         if (gb == null) {
    23             System.out.println("分组依据不能为空");
    24             return null;
    25         }
    26         Iterator<D> iterator = colls.iterator();
    27         Map<T, List<D>> map = new HashMap<T, List<D>>();
    28         while (iterator.hasNext()) {
    29             D d = iterator.next();
    30             T t = gb.groupBy(d);
    31             if (map.containsKey(t)) {
    32                 map.get(t).add(d);
    33             } else {
    34                 List<D> list = new ArrayList<D>();
    35                 list.add(d);
    36                 map.put(t, list);
    37             }
    38         }
    39 
    40         return map;
    41     }
    42 }
    package test;
    
    import javaBean.CustomerVo;
    import service.ListSortUtil;
    
    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.*;
    
    /**
     * 测试集合分组算法
     *
     * @author 清茶
     * @create 2017-10-26 10:40
     */
    public class TestListSort {
    
        public static void main(String[] args) {
            List<CustomerVo> list = new ArrayList<CustomerVo>();
    
            list.add(new CustomerVo(1L, 2000L, "张1", generateDate(2017, 10, 10)));
            list.add(new CustomerVo(2L, 2000L, "张2", generateDate(2017, 10, 10)));
            list.add(new CustomerVo(3L, 2001L, "张3", generateDate(2017, 11, 10)));
            list.add(new CustomerVo(4L, 2001L, "张4", generateDate(2017, 11, 10)));
            list.add(new CustomerVo(5L, 2002L, "张5", generateDate(2017, 12, 10)));
            list.add(new CustomerVo(6L, 2002L, "张6", generateDate(2017, 12, 10)));
    
            // 按照客户日期进行排序
            Map<Date, List<CustomerVo>> sortMapByDate = sortByDate(list);
            Map<Long, List<CustomerVo>> sortMapByLong = sortByLong(list);
    
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
    
            for (Map.Entry<Date, List<CustomerVo>> entry : sortMapByDate.entrySet()) {
                Date key = entry.getKey();
                List<CustomerVo> customerVos = entry.getValue();
                System.out.print("键值为:" + sdf.format(key) + "所包含的客户ID分别为:");
                for (CustomerVo vo : customerVos) {
                    System.out.print(vo.getId() + ",");
                }
                System.out.println();
            }
        }
    
        private static Map<Date, List<CustomerVo>> sortByDate(List<CustomerVo> vos) {
            return ListSortUtil.group(vos, new ListSortUtil.GroupBy<Date>() {
                public Date groupBy(Object obj) {
                    CustomerVo vo = (CustomerVo) obj;
                    return vo.getDate();
                }
            });
        }
    
        private static Map<Long, List<CustomerVo>> sortByLong(List<CustomerVo> vos) {
            return ListSortUtil.group(vos, new ListSortUtil.GroupBy<Long>() {
                public Long groupBy(Object obj) {
                    CustomerVo vo = (CustomerVo) obj;
                    return vo.getId();
                }
            });
        }
    
        private static Date generateDate(int year, int month, int day) {
    
            Calendar calendar = Calendar.getInstance();
            calendar.set(Calendar.YEAR, year);
            calendar.set(Calendar.MONTH, month - 1);
            calendar.set(Calendar.DAY_OF_MONTH, day);
            Date date = calendar.getTime();
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
            Date returnDate = new Date();
            try {
                System.out.println(sdf.format(date));
                returnDate = sdf.parse(sdf.format(date));
            } catch (ParseException e) {
                e.printStackTrace();
            }
            return returnDate;
        }
    
    }
  • 相关阅读:
    C#中的int、long、float、double等类型都占多少个字节的内存
    Bit 存储操作代码碎片
    unity文件写入与读取
    unity调用系统剪切板功能
    LayerMask小结
    NGUI中获取鼠标在控件内部坐标
    【Unity技巧】Unity中的优化技术
    工程源码目录
    Unity3D_NGUI_性能优化实践_CPU卡顿
    Unity3d:UI面板管理整合进ToLua
  • 原文地址:https://www.cnblogs.com/jqlbj/p/7736888.html
Copyright © 2011-2022 走看看