Преобразование элементов потока в Java
Метод map принимает функцию и строит поток,
где на месте каждого исходного значения лежит
результат вызова. Тип элементов может измениться:
из чисел получить строки, из строк - их длину.
Проходные баллы можно перевести в буквенные метки после отбора:
import java.util.List;
public class Main {
public static void main(String[] args) {
List<Integer> scores = List.of(42, 88, 55, 91, 60);
List<String> labels = scores.stream()
.filter(score -> score >= 60)
.map(score -> {
if (score >= 90) {
return "A";
}
if (score >= 75) {
return "B";
}
return "C";
})
.toList();
System.out.println(labels);
}
}
Для простых преобразований часто хватает ссылки на метод:
import java.util.List;
public class Main {
public static void main(String[] args) {
List<String> tags = List.of("io", "api", "log", "ui");
List<String> upper = tags.stream()
.filter(tag -> tag.length() <= 3)
.map(String::toUpperCase)
.toList();
System.out.println(upper);
}
}
Дан код:
var nums = List.of(-2, 0, 5, 8, 11);
Оставьте положительные числа, умножьте каждое на два и выведите список результата.
Дан код:
var strings = List.of("go", "kotlin", "rust");
Получите список длин этих слов и выведите его.