Отбор элементов потока в Java
Метод filter принимает предикат и пропускает
дальше только те значения, для которых условие
истинно. Шаг возвращает новый поток и сам по себе
не собирает результат.
Из списка оценок можно оставить только проходные баллы:
import java.util.List;
public class Main {
public static void main(String[] args) {
List<Integer> scores = List.of(42, 88, 55, 91, 60);
List<Integer> passed = scores.stream()
.filter(score -> score >= 60)
.toList();
System.out.println(passed);
}
}
Для строк удобно отбирать по длине или по содержимому.
Несколько вызовов filter подряд работают как
логическое «и»:
import java.util.List;
public class Main {
public static void main(String[] args) {
List<String> tags = List.of("io", "api", "log", "ui");
List<String> shortTags = tags.stream()
.filter(tag -> tag.length() <= 3)
.filter(tag -> !tag.equals("io"))
.toList();
System.out.println(shortTags);
}
}
Дан код:
var nums = List.of(-2, 0, 5, 8, 11);
Оставьте положительные числа и выведите список результата.
Дан код:
var strings = List.of("go", "kotlin", "rust");
Отберите слова длиннее двух символов и выведите их количество.