У меня есть список, Integer
list
из которого list.stream()
я хочу максимальное значение. Какой самый простой способ? Мне нужен компаратор?
java-8
java-stream
pcbabu
источник
источник
Collections.max
..Ответы:
Вы можете преобразовать поток в
IntStream
:Или укажите компаратор естественного порядка:
Или используйте операцию уменьшения:
Или используйте коллектор:
Или используйте IntSummaryStatistics:
int max = list.stream().collect(Collectors.summarizingInt(Integer::intValue)).getMax();
источник
int
, тоmapToInt(...).max().getAsInt()
илиreduce(...).get()
в цепочки методов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);
источник
С потоком и уменьшением
источник
Integer::max
но это точно то же самое).Вы также можете использовать фрагмент кода ниже:
int max = list.stream().max(Comparator.comparing(Integer::valueOf)).get();
Другая альтернатива:
list.sort(Comparator.reverseOrder()); // max value will come first int max = list.get(0);
источник
int value = list.stream().max(Integer::compareTo).get(); System.out.println("value :"+value );
источник
Вы можете использовать int max = Stream.of (1,2,3,4,5) .reduce (0, (a, b) -> Math.max (a, b)); работает как для положительных, так и для отрицательных чисел
источник
Integer.MIN_VALUE
чтобы заставить его работать с отрицательными числами.