java8中的stream的用法实践

1、将list转成map

在查找list中某个key有没有的时候,需要转成map,经常用到

Map<Long, ProductBatchStockDto>  manualFinallyItemNbrsMap =  manualFinallyList.stream()
.collect(Collectors.toMap(ProductBatchStockDto :: getItemNbr, p -> p));

key:ProductBatchStockDto实体类的itemNbr属性 value:ProductBatchStockDto实体类对象 注意:当key值由相同的时候,会报异常:java.lang.IllegalStateException: Duplicate key

2、将map转成list

private List<UserGroupDTO> groupAreaFunctionDetailAreaType(List<UserDTO> userDTOList) {
          
   
    // 创建list
    List<UserGroupDTO> userGroupDTOList = new ArrayList<>();

    // 按照age分组,封装成map,key:age, value:该age对应的list
    Map<Integer, List<UserGroupDTO>> userGroupDTOGroupMap = areaFunctionDetailDTOList.stream()
        .collect(Collectors.groupingBy(UserDTO::getAge));

   // 将map转成list
    for (Map.Entry<Integer, List<UserGroupDTO>> userGroupEntry : userGroupDTOGroupMap.entrySet()) {
          
   
      UserGroupDTO userGroupDTO = new UserGroupDTO();
      userGroupDTO.setAreaType(userGroupEntry.getKey());
      userGroupDTO.setAreaTypeName(AreaTypeEnum.getNameByCode(userGroupEntry.getKey()));
      userGroupDTO.setHobbyList(userGroupEntry.getValue());
      userGroupDTOList.add(userGroupDTO);
    }

    return userGroupDTOList;
  }
经验分享 程序员 微信小程序 职场和发展