-
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 ...