как найти максимальное значение из целого числа, используя поток в Java 8?


у меня есть список Integerlist и list.stream() Я хочу максимальное значение. Какой самый простой способ? Нужен ли мне компаратор?

6 52

6 ответов:

вы можете либо преобразовать поток IntStream:

OptionalInt max = list.stream().mapToInt(Integer::intValue).max();

или укажите компаратор естественного порядка:

Optional<Integer> max = list.stream().max(Comparator.naturalOrder());

или используйте уменьшить операцию:

Optional<Integer> max = list.stream().reduce(Integer::max);

или использовать взыскателя:

Optional<Integer> max = list.stream().collect(Collectors.maxBy(Comparator.naturalOrder()));

или использовать IntSummaryStatistics:

int max = list.stream().collect(Collectors.summarizingInt(Integer::intValue)).getMax();
int max = list.stream().reduce(Integer.MIN_VALUE, (a, b) -> Integer.max(a, b));

другая версия может быть:

int maxUsingCollectorsReduce = list.stream().collect(Collectors.reducing(Integer::max)).get();

правильный код:

int max = list.stream().reduce(Integer.MIN_VALUE, (a, b) -> Integer.max(a, b));

или

int max = list.stream().reduce(Integer.MIN_VALUE, Integer::max);

с потоком и уменьшить

Optional<Integer> max = list.stream().reduce(Math::max);

вы можете использовать int max= Stream.из(1,2,3,4,5).уменьшить(0, (a, b)->математика.Макс(а,б)); работает как для положительных, так и отрицательных чисел