目前项目中常用的java stream用法,不断更新 weir 2020-06-12 10:58:15.0 java 1197 // list集合转map key是list单属性,value是list对象,支持重复key Map<Integer, AdvVsitCountObj> map = advVsitCountObjList.stream().collect(Collectors.toMap(AdvVsitCountObj::getShopId, a -> a, (k1, k2) -> k1)); checkVinSuccess.stream().filter(m -> !StringUtils.isEmpty(m.getError())). collect(Collectors.toMap(MaintainUserVinCheckVo::getId, a -> a, (k1, k2) -> k1)) // list集合去重 List<String> phones phones.stream().distinct().collect(Collectors.toList()) // list集合转map key是list单属性, value是list对象集合 List<CollisionImage> collisionImages Map<Integer, List<CollisionImage>> mapImage = collisionImages.stream().collect( Collectors.groupingBy(CollisionImage::getMessageId)); // 去掉集合对象某属性为空的对象,生成新的集合 List<InsuranceHistory> data List<InsuranceHistory> haveOperator = data.stream().filter( insuranceHistory -> insuranceHistory.getOperatorId() != null) .collect(Collectors.toList()); // 对象集合提取某属性为新集合,对新集合去重,set to List List<MaintainUserDto> dtoList List<Integer> vehicleIds = dtoList.stream().map(s -> s.getVehicleId()).collect(Collectors.toList()); Set<Integer> vehicleIdsSet = vehicleIds.stream().collect(Collectors.toSet()); vehicleIds = vehicleIdsSet.stream().collect(Collectors.toList()); List<String> vins // 差集 List<String> reduce1 = vins.stream() .filter(item -> !vins3.contains(item)) .collect(Collectors.toList()); // 提取重复数据 List<String> result = new ArrayList<>(); Map<String, Long> collect = vins.stream().collect(Collectors .groupingBy(Function.identity(), Collectors.counting())); collect.forEach((k, v) -> { if (v > 1) result.add(k); }); // 对象集合转map,key value 都是某个属性,支持重复key List<VehicleBrandInfo> brand Map<Integer, String> brandMap = brand.stream().collect(Collectors.toMap( VehicleBrandInfo::getId, VehicleBrandInfo::getName, (k1, k2) -> k1)); map = mileageList.stream().collect(Collectors.toMap( VehicleMileageItem::getVehicleId, s -> s.getMileage())); //两个不同对象集合转换 List<MaintainUserImportVo> successList List<MaintainUserVinCheckVo> vinList = new ArrayList(); vinList.addAll(successList.stream().map(line -> initCheckVin(line)).collect(Collectors.toList())); private MaintainUserVinCheckVo initCheckVin(MaintainUserImportVo maintainUserImportVo) { MaintainUserVinCheckVo maintainUserVinCheckVo = new MaintainUserVinCheckVo(); maintainUserVinCheckVo.setId(maintainUserImportVo.getId()); maintainUserVinCheckVo.setVin(maintainUserImportVo.getVin()); return maintainUserVinCheckVo; } // list集合 to 数组 List<Integer> vehicleIds Integer[] mm = vehicleIds.stream().toArray(Integer[]::new) // 运用正则 Pattern p = Pattern.compile("^1\\d{10}$"); //正则过滤手机号 List<String> phoneLista = phoneList.stream().filter(line -> p.matcher(line).matches()).collect(Collectors.toList()); // 去重 Set<Integer> couponSet = usedList.stream().map(s -> s.getCouponId()).collect(Collectors.toSet()); List<Integer> shopIds = selectShop.stream().map(s -> s.getId()).distinct().collect(Collectors.toList()); // 累加 Double totalRepair = executiveForCmRepair.stream().collect( Collectors.summingDouble(OrgCollisionVo::getTotalRepair)); // 求平均值 double average = orderVos3.stream().mapToDouble(ResponseTimeResultVo::getGrade).average().getAsDouble(); // 正则 排序 List<VehicleModelDTO> types List<VehicleModelDTO> numbers = types.stream() .filter(it -> PATTERN.matcher(it.getName()).find()) .sorted(Comparator.reverseOrder()) .collect(Collectors.toList()); subFilter = ignoreList.stream().filter(ignore -> ignore.startsWith(prefix)).map(ignore -> ignore.substring(prefix.length())).toArray(String[]::new); list.stream().forEach(i -> { ZeusPersonDTO customer = personMap.get(i.getVehicleOwnerId()); if (!ValidateUtils.validPhone(customer.getPhone())) { removeDTO.add(i); } });