jdk1.8日常使用示例
//1、List轉Map
List<RegionVO> listVO = Lists.newArrayList();
//todo賦值
Map<String, RegionVO> resultMap = listVO.stream().collect(Collectors.toMap(RegionVO::getId, Function.identity()));
//2、List轉Map,分組
List<ContractPathDTO> listPath=Lists.newArrayList();
//todo賦值
Map<String, List<ContractPathDTO>> mapPath = listPath.stream().collect(Collectors.groupingBy(ContractPathDTO::getStartEndKey));
List<AbstractObjectInfo> abstractObjectInfos =Lists.newArrayList();
//todo賦值
Map<Long, AbstractObjectInfo> objectInfoMap = abstractObjectInfos.stream()
.collect(StreamCollectors.toHashMap(AbstractObjectInfo::getAbstractObjectUkid, Function.identity()));
//3、List轉Set
List<StorageView> storageViews = Lists.newArrayList();
//todo賦值
Set<Long> businessIds = storageViews.stream().map(StorageView::getGoodsOwnerUkid).collect(Collectors.toSet());
4、List 求和(整數)
List<SwStorageDetail> swStorageDetails = Lists.newArrayList();
//todo賦值
//商品總數
long goodsTotal = swStorageDetails.stream().mapToLong(SwStorageDetail::getGoodsAmount).sum();
//5、List 求和(整數)BigDecimal 類型數據求和,使用reduce
參考https://www.cnblogs.com/yangzhenlong/p/8378029.html
BigDecimal add = list.stream().map(User::getHeight).reduce(BigDecimal.ZERO, BigDecimal::add);
//6. 過濾出所有參數類型爲入參的參數
List<GwServiceParamDTO> iNParamList = gwServiceParamDTOList.stream()
.filter(a -> a.getParamInoutype() == IN_PARAM_TYPE).collect(Collectors.toList());
//7.Map賦值
Map<Long, Set<ContainerDo>> contractContainerMap = new HashMap<>(16);
for (.....) {
Long contractUkid = ...;
ContainerDo container = ...;
contractContainerMap.computeIfAbsent(contractUkid, k -> new HashSet<>()).add(container);
}
//8.取最值
//取最長備註
String remark = seTransferOrders.stream().max((o1, o2)-> {
String name1 = Optional.ofNullable(o1.getRemark()).orElse("");
String name2 = Optional.ofNullable(o2.getRemark()).orElse("");
return name1.length() > name2.length() ? 1 : name1.length() == name2.length() ? 0 : -1;
}).get().getRemark();
// 9.拋異常
Long relationUkid = Optional.ofNullable(imSubItemService.getBySubItemUkid(relationUkid)).map(ImSubItem::getItemUkid).orElseThrow(NOT_FOUND_GROUP);
// 10.過濾
if (relations.stream().anyMatch((a) -> a.getStepFlow() < 5)) {
........
}