Метод filter
Метод filter класса Optional принимает
предикат - функцию, которая возвращает boolean.
Если значение внутри Optional присутствует и
удовлетворяет условию предиката, метод возвращает
тот же Optional с этим значением. Если значение
не проходит проверку или Optional пуст,
возвращается пустой Optional.
Синтаксис
optional.filter(predicate)
Пример
Давайте создадим Optional со значением
5 и проверим, больше ли оно 0:
import java.util.Optional;
public class Main
{
public static void main(String[] args)
{
Optional<Integer> opt = Optional.of(5);
Optional<Integer> res = opt.filter(x -> x > 0);
System.out.println(res);
}
}
Результат выполнения кода:
Optional[5]
Пример
Теперь проверим значение 5 на условие
x > 10. Так как условие не выполняется,
метод вернёт пустой Optional:
import java.util.Optional;
public class Main
{
public static void main(String[] args)
{
Optional<Integer> opt = Optional.of(5);
Optional<Integer> res = opt.filter(x -> x > 10);
System.out.println(res);
}
}
Результат выполнения кода:
Optional.empty
Пример
Если Optional пуст, метод filter
вернёт пустой Optional, не вызывая предикат:
import java.util.Optional;
public class Main
{
public static void main(String[] args)
{
Optional<String> opt = Optional.empty();
Optional<String> res = opt.filter(s -> s.length() > 0);
System.out.println(res);
}
}
Результат выполнения кода:
Optional.empty
Пример
Давайте проверим строку "abcde" на то,
что она начинается с символа "a":
import java.util.Optional;
public class Main
{
public static void main(String[] args)
{
Optional<String> opt = Optional.of("abcde");
Optional<String> res = opt.filter(s -> s.startsWith("a"));
System.out.println(res);
}
}
Результат выполнения кода:
Optional[abcde]