1 2 3 | ArrayList<String> list = new ArrayList<>(); for (Person p : people) list.add(p.toString()); |
1 2 3 | <R> collect(Supplier<R> resultSupplier, BiConsumer<R, T> accumulator, BiConsumer<R, R> combiner) |
1 2 3 4 | StringBuilder concat = strings.stream() .collect(() -> new StringBuilder(), (sb, s) -> sb.append(s), (sb, sb2) -> sb.append(sb2)); |
1 2 3 4 | StringBuilder concat = strings.stream() .collect(StringBuilder::new, StringBuilder::append, StringBuilder::append); |
1 2 3 4 | Set<String> uniqueStrings = strings.stream() .collect(HashSet::new, HashSet::add, HashSet::addAll); |
1 2 | Set<String> set = new HashSet<>(); strings.stream().forEach(s -> set.add(s)); |
“可将收集器组合到一起来形成更复杂的聚合。”
1 | String concat = strings.stream().collect(Collectors.joining()); |
1 | Set<String> uniqueStrings = strings.stream().collect(Collectors.toSet()); |
1 2 3 4 | Map<Seller, List<Txn>> bigTxnsBySeller = txns.stream() .filter(t -> t.getAmount() > 1000) .collect(groupingBy(Txn::getSeller)); |
1 2 3 4 | Map<Seller, Txn> biggestTxnBySeller = txns.stream() .collect(groupingBy(Txn::getSeller, maxBy(comparing(Txn::getAmount)))); |
1 2 3 4 | Map<Seller, Integer> salesBySeller = txns.stream() .collect(groupingBy(Txn::getSeller, summingInt(Txn::getAmount))); |
1 2 3 4 5 | Map<Region, Map<Seller, Integer>> salesByRegionAndSeller = txns.stream() .collect(groupingBy(Txn::getRegion, groupingBy(Txn::getSeller, summingInt(Txn::getAmount)))); |
1 2 3 4 5 6 | Pattern whitespace = Pattern.compile("\\s+"); Map<String, Integer> wordFrequencies = reader.lines() .flatMap(s -> whitespace.splitAsStream()) .collect(groupingBy(String::toLowerCase), Collectors.counting()); |
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) | Powered by Discuz! 7.0.0 |