Сбор потока в список в Java
Метод toList на потоке появился как удобная
конечная операция в новых версиях Java. Он возвращает
неизменяемый список без лишнего вызова
collect. Для изменяемой коллекции по-прежнему
используют Collectors.toList().
Цепочку отбора и преобразования завершим сбором списка:
import java.util.List;
public class Main {
public static void main(String[] args) {
List<String> words = List.of("go", "tool", "io", "kit");
List<String> picked = words.stream()
.filter(w -> w.length() >= 3)
.map(String::toUpperCase)
.toList();
System.out.println(picked);
}
}
Список из toList нельзя дополнить через
add. Если нужен изменяемый ArrayList,
оберните результат или соберите через коллектор:
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
public class Main {
public static void main(String[] args) {
List<Integer> nums = List.of(2, 3, 4);
ArrayList<Integer> mutable = nums.stream()
.map(n -> n * 2)
.collect(Collectors.toCollection(ArrayList::new));
mutable.add(100);
System.out.println(mutable);
}
}
Дан код:
var nums = List.of(5, 12, 3, 18, 7);
Оставьте числа больше шести, возведите в квадрат и выведите список результата.