List操作

将List中的实体类按照某个字段进行分组并存放至Map中

Posted by dm on December 24, 2019
/**
 * @author dongm
 * @Description: 将List中的实体类按照某个字段进行分组并存放至Map中
 * @date:2019/12/24
 * @param: [goodsTransitList]
 */
public Map<String, List<BackGoodsTransitDto>> getCatagory(List<BackGoodsTransitDto> goodsTransitList) {
    /************* jdk1.8 新特性 start ***************/
    
    Map<Long, List<BackGoodsTransitDto>> map = goodsTransitList.stream().collect(Collectors.groupingBy(BackGoodsTransitDto::getCatagoryId));
    System.out.println("map ======= " + map);
    
    /************* jdk1.8 新特性 end ***************/


    /************** 传统方法start ****************/
    
    // 初始化map
    Map<String , List<BackGoodsTransitDto>> map = new HashMap<>();
    // 遍历list
    for(BackGoodsTransitDto goodsTransitDto : goodsTransitList) {
        String key = "";
        // 遍历map获取key值
        for (Map.Entry<String, List<BackGoodsTransitDto>> entry : map.entrySet()) {
            key = entry.getKey();
        }
        // 判断key是否相同
        if (map.containsKey(key)) {
            //map中存在此id,将数据存放当前key的map中
            map.get("catagoryList").add(goodsTransitDto);
        } else {//map中不存在,新建key,用来存放数据
            List<BackGoodsTransitDto> tmpList = new ArrayList<>();
            tmpList.add(goodsTransitDto);
            List<BackGoodsTransitDto> name = map.get("catagoryName");
            map.put("catagoryList", tmpList);
        }
    }
    return map;
    
    /************** 传统方法end ****************/
}