-
List to Map
// 1.groupingBy :自定义 key 和 value // 例子:key:id+memberId, value: memberId List Map<String, List<String>> customGroupByMap = users.stream().collect( Collectors.groupingBy(e -> e.getId() + e.getMemberId(), Collectors.mapping(User::getMemberId, Collectors.toList()) )); // 2.groupingBy : normal // 例子:key:memberId, value: User List Map<String, List<User>> normalGroupByMap = users.stream() .filter(key -> key.getName() != null) .collect(Collectors.groupingBy(e -> e.getName(), Collectors.toList())); // 3.to Map 注意:key必须不能重复,重复会爆错 Map<Integer, User> userIdMap = users.stream().collect(Collectors.toMap(User::getId, Function.identity())); Map<Integer, User> otherWrite = users.stream().collect(Collectors.toMap(User::getId, e->e)); // 4.to Map key可以重复. 最后一个参数方法可自定义 Map<Integer, User> keyCanBeDuplicate = users.stream().collect(Collectors.toMap(User::getId, Function.identity(), (value1, value2) -> value2)); // 5.用toMap的形式 实现 groupingBy Map<Integer, List<User>> toMapEqualsGroupBy = users.stream().collect(Collectors.toMap(User::getId, Collections::singletonList, (e1, e2) -> { List<User> userList = new ArrayList<>(); userList.addAll(e1); userList.addAll(e2); return userList; }));
-
reduce 金额相加
bargainHelps.stream().map(e -> e.getHelpBargainAmount()).reduce(BigDecimal.ZERO,BigDecimal::add);
-
根据属性去重 (对象的单个属性)
List<Book> unique = books.stream().collect( Collectors.collectingAndThen(Collectors.toCollection( () -> new TreeSet<>(Comparator.comparing(o -> o.id))), ArrayList::new)
对象的多个属性
List<ErrorSeatInfoDto> distinctErr = err.stream() .collect( Collectors.collectingAndThen( Collectors.toCollection( () -> new TreeSet<>(Comparator.comparing(o -> o.getAirline() + "_" + o.getCabinCode() + "_" + o.getChannelInfo().getSuppChannelName())) ), ArrayList::new) );
-
对集合的每个元素进行操作,但不消费
cacheList.getFlightList().stream().peek(f -> f.setCabinList(null)).collect(Collectors.toList());
-
Map key进行排序
Map<Integer,List<CouponConfig>> sortPrizes = perPriorityPrizes.entrySet().stream() .sorted(Map.Entry.comparingByKey()) .collect( Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (oldValue, newValue) -> oldValue, LinkedHashMap::new) );
-
排序:多个字段排序
ossPicinfo.sort((BannerOssPicInfoDto o1, BannerOssPicInfoDto o2) -> { if (o1.getPicOrder().equals(o2.getPicOrder())) { return o1.getAddTime().compareTo(o2.getAddTime()); } else { return o1.getPicOrder().compareTo(o2.getPicOrder()); } });
排序:String字段排序 小心数字 是一位一位比较的
-
排序:对象的多个属性排序
List<User> users = new ArrayList<>(); users.add(new User(6, "2")); users.add(new User(2,"2")); users.add(new User(4,"4")); users.sort(Comparator.comparing((User u) -> new BigDecimal(u.getName())).thenComparing(user -> user.getId()));
-
List to Map
// Collectors.toMap Map<Integer,PickupDayTimeCfgBO> map = pickupDayTimeCfgBOS.stream().collect(Collectors.toMap(PickupDayTimeCfgBO::getPickup, e -> e))
Stream常用方法
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
推荐阅读更多精彩内容
- Int Double Long 设置特定的stream类型, 提高性能,增加特定的函数 无存储。stream不是一...
- 转自: Java 8 中的 Streams API 详解 为什么需要 Stream Stream 作为 Java ...
- Streams 的背景,以及 Java 8 中的使用详解 为什么需要 Stream Stream 作为 Java ...