Поток из коллекции в Java
У готовой коллекции есть stream: метод не
копирует элементы в новую структуру, а открывает
потоковый вид на те же данные. Дальше шаги пишут
так же, как в цепочке преобразований над списком.
Для списка строк можно поднять регистр каждой строки и в конце снова получить список:
import java.util.List;
public class Main {
public static void main(String[] args) {
List<String> words = List.of("api", "log", "io");
List<String> upper = words.stream()
.map(String::toUpperCase)
.toList();
System.out.println(upper);
}
}
Тот же прием работает у множества. Порядок обхода зависит от типа коллекции, а отсортировать элементы можно уже внутри цепочки:
import java.util.List;
import java.util.Set;
public class Main {
public static void main(String[] args) {
Set<Integer> ids = Set.of(3, 1, 2);
List<Integer> ordered = ids.stream()
.sorted()
.toList();
System.out.println(ordered);
}
}
Конечный toList материализует результат.
Исходный список или множество при этом не меняется:
меняется только новая коллекция, которую вернул
конец цепочки.
Дан код:
var strings = List.of("go", "rust", "kotlin");
Постройте поток, оставьте строки длиннее трех символов и соберите их в список. Выведите результат.
Дано множество Set.of(5, 12, 8).
Получите список четных чисел в порядке
возрастания. Выведите его.