Collectors - zaawansowane zbieranie
List<String> names = Arrays.asList("Ania", "Bartosz", "Adam", "Ola", "Beata"); // Złączenie stringów String joined = names.stream() .collect(Collectors.joining(", ", "[", "]")); // [Ania, Bartosz, Adam, Ola, Beata] // Grupowanie Map<Character, List<String>> byLetter = names.stream() .collect(Collectors.groupingBy(s -> s.charAt(0))); // {A=[Ania, Adam], B=[Bartosz, Beata], O=[Ola]} // Partycjonowanie (grupowanie wg predykatu) Map<Boolean, List<String>> partition = names.stream() .collect(Collectors.partitioningBy(s -> s.length() > 3)); // Zliczanie per grupa Map<Character, Long> countByLetter = names.stream() .collect(Collectors.groupingBy(s -> s.charAt(0), Collectors.counting())); // Do mapy Map<String, Integer> nameLengths = names.stream() .collect(Collectors.toMap(s -> s, String::length));