Ich habe eine Liste von Integer
list
und von der list.stream()
ich den Maximalwert haben möchte. Was ist der einfachste Weg? Benötige ich einen Komparator?
Collections.max
..
Ich habe eine Liste von Integer
list
und von der list.stream()
ich den Maximalwert haben möchte. Was ist der einfachste Weg? Benötige ich einen Komparator?
Collections.max
..
Antworten:
Sie können den Stream entweder konvertieren in IntStream
:
OptionalInt max = list.stream().mapToInt(Integer::intValue).max();
Oder geben Sie den natürlichen Ordnungskomparator an:
Optional<Integer> max = list.stream().max(Comparator.naturalOrder());
Oder verwenden Sie Reduktionsvorgang:
Optional<Integer> max = list.stream().reduce(Integer::max);
Oder verwenden Sie Collector:
Optional<Integer> max = list.stream().collect(Collectors.maxBy(Comparator.naturalOrder()));
Oder verwenden Sie IntSummaryStatistics:
int max = list.stream().collect(Collectors.summarizingInt(Integer::intValue)).getMax();
int
, dann mapToInt(...).max().getAsInt()
oder reduce(...).get()
zu den Methodenketten
Eine andere Version könnte sein:
int maxUsingCollectorsReduce = list.stream().collect(Collectors.reducing(Integer::max)).get();
Richtiger Code:
int max = list.stream().reduce(Integer.MIN_VALUE, (a, b) -> Integer.max(a, b));
oder
int max = list.stream().reduce(Integer.MIN_VALUE, Integer::max);
Mit Stream und reduzieren
Optional<Integer> max = list.stream().reduce(Math::max);
Integer::max
aber das ist genau das gleiche).
int value = list.stream().max(Integer::compareTo).get();
System.out.println("value :"+value );