get
возвращает само значение, разворачивает Optional
, поэтому тип переменной должен быть Integer
.
Integer opt = stream1.max(Comparator.comparing(Integer::valueOf)).get();
Обратите внимание, что get
без isPresent
небезопасно и может приведет к исключению.
Есть более хороший способ, хотя
int max = list.stream()
.filter(x -> x % 2 == 1)
.mapToInt(Integer::valueOf)
.max()
.orElse(0); // or other value
Эта проверка
if (stream1.findAny().isPresent() == true)
System.out.println("Hey");
не является правильной, поскольку она всегда будет истинной (1 ) [судя по вашим данным] и использует операцию терминала в потоке (2) [то есть вы не сможете использовать ее позже, как пытались].
Весь метод можно переписать в
IntStream
.range(0, 10)
.filter(x -> x % 2 == 1)
.max()
.orElseThrow(() -> new IllegalArgumentException("no max"));
Обратите внимание, что здесь я использовал другую технику. Я собираюсь сгенерировать исключение, если максимум не может быть рассчитан (нет элементов в потоке).