1.List对象,根据对象中某个属性进行分组
核心代码: cartItemList根据 businessId 分组 , map格式 (businessId , 等于businessId 的集合)
Map<String, List<CartItem>> collect = cartItemList.stream()
.collect(Collectors.groupingBy(CartItem::getBusinessId));
2.取出集合对象中的某个值转list对象
例:从检测项集合中, 获取 检测id , 返回检测id集合
detectInfoList -> 检测详集合 getId() -> 获取检测id detectIds -> 检测id集合
List<Long> detectIds = detectInfoList.stream().map(x -> x.getId()).distinct().collect(Collectors.toList());
3.根据某个值进行过滤处理
例:根据检测id 获取此检测id的检测详情集合
chronicDetectDetailList -> 所有的检测详情集合
x -> x.getDetectId().equals(chronicDetectInfo.getId() -> 遍历检测详情获取检测id = 传入的检测id(chronicDetectInfo.getId())
//根据检测项id过滤 , 对应id set对应的检测详情
List<ChronicDetectDetail> detectDetailList =
chronicDetectDetailList.stream().filter(x -> x.getDetectId().equals(chronicDetectInfo.getId()))
.collect(Collectors.toList());
4.根据某个值过滤,然后取时间最大的一条数据
TmsBillContainer container = tmsBillContainerList.stream()
.filter(tmsBillContainer -> !tmsBillContainer.getStatus().equals(TmsBillContainerStatusEnums.STATUS_40.getStatus()))
.sorted(Comparator.comparing(TmsBillContainer::getCreateTime).reversed())
.findFirst().orElse(null);
5.计算某个属性的总数
//说明: billHandoverDtlList集合 的数量 qty 的总数
Integer scannedQty = billHandoverDtlList.stream().map(TmsBillHandoverDtl::getQty).reduce(0, Integer::sum);
6.单值按照时间倒序排序
list = list.stream().sorted(Comparator.comparing(实体::排序字段).reversed()).collect(Collectors.toList());
7.单值根据userId 进行排序——升序排序
list = list.stream().sorted(Comparator.comparing(User::getUserId))
.collect(Collectors.toList());
8.多值排序,根据userId及userName进行联合升序排序
list = list.stream().sorted(Comparator.comparing(User::getUserId)
.thenComparing(User::getUserName)).collect(Collectors.toList());
9.先以userId升序,升序结果进行userId降序,再进行userName升序
list = list.stream().sorted(Comparator.comparing(User::getUserId).reversed()
.thenComparing(User::getUserName)).collect(Collectors.toList());
10.先以userId降序,再进行userName升序 **推荐使用该种方式
list = list.stream().sorted(Comparator.comparing(User::getUserId,Comparator.reverseOrder())
.thenComparing(User::getUserName)).collect(Collectors.toList());
11.先以userId升序,再进行userName降序
list = list.stream().sorted(Comparator.comparing(ser::getUserId)
.thenComparing(User::getUserName,Comparator.reverseOrder()))
.collect(Collectors.toList());
12.集合对象根据某两个字段组装map
Map<Long,String> map = tmsBillContainers.stream().collect
(Collectors.toMap(TmsBillContainer::getId, TmsBillContainer::getContainerNo));
13.集合对象根据某个唯一值,组装map , 值,对象
Map<Long, TmsBmShipper> shipperMap = tmsBmShippers.stream()
.collect(Collectors.toMap(TmsBmShipper::getShipperId, Function.identity()));