Сбор потока через Collectors в Java
Метод collect принимает Collector и
гибко собирает результат. Класс Collectors
дает заготовки для списков, множеств, строк и
сложных структур.
Уникальные значения удобно складывать в множество:
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
public class Main {
public static void main(String[] args) {
List<Integer> nums = List.of(2, 5, 2, 8, 5);
Set<Integer> unique = nums.stream()
.collect(Collectors.toSet());
System.out.println(unique);
}
}
Коллектор joining склеивает строки с
разделителем:
import java.util.List;
import java.util.stream.Collectors;
public class Main {
public static void main(String[] args) {
List<String> tags = List.of("api", "log", "io");
String line = tags.stream()
.filter(tag -> tag.length() > 2)
.collect(Collectors.joining(", "));
System.out.println(line);
}
}
Через toMap можно построить словарь, если
для каждого ключа одно значение:
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
public class Main {
public static void main(String[] args) {
List<String> words = List.of("go", "java", "rust");
Map<String, Integer> lengths = words.stream()
.collect(Collectors.toMap(
word -> word,
String::length
));
System.out.println(lengths);
}
}
Дан код:
var nums = List.of(1, 2, 3, 4);
Соберите четные числа в множество и выведите его.
Дан код:
var strings = List.of("a", "bb", "ccc");
Склейте их через "|" и выведите строку.