Mam listę Integer
list
i od list.stream()
Chcę maksymalną wartość. Jaki jest najprostszy sposób? Czy potrzebuję komparatora?
java-8
java-stream
pcbabu
źródło
źródło
Collections.max
...Odpowiedzi:
Możesz przekonwertować strumień na
IntStream
:Lub określ naturalny komparator kolejności:
Lub użyj zredukować operację:
Lub użyj kolektora:
Lub użyj IntSummaryStatistics:
int max = list.stream().collect(Collectors.summarizingInt(Integer::intValue)).getMax();
źródło
int
, tomapToInt(...).max().getAsInt()
lubreduce(...).get()
do łańcuchów metodint max = list.stream().reduce(Integer.MIN_VALUE, (a, b) -> Integer.max(a, b));
źródło
Inną wersją może być:
int maxUsingCollectorsReduce = list.stream().collect(Collectors.reducing(Integer::max)).get();
źródło
Prawidłowy kod:
int max = list.stream().reduce(Integer.MIN_VALUE, (a, b) -> Integer.max(a, b));
lub
int max = list.stream().reduce(Integer.MIN_VALUE, Integer::max);
źródło
Ze strumieniem i zmniejsz
źródło
Integer::max
ale to dokładnie to samo).Możesz również użyć poniższego wyciętego kodu:
int max = list.stream().max(Comparator.comparing(Integer::valueOf)).get();
Inna alternatywa:
list.sort(Comparator.reverseOrder()); // max value will come first int max = list.get(0);
źródło
int value = list.stream().max(Integer::compareTo).get(); System.out.println("value :"+value );
źródło
Możesz użyć int max = Stream.of (1,2,3,4,5) .reduce (0, (a, b) -> Math.max (a, b)); działa zarówno dla liczb dodatnich, jak i ujemnych
źródło
Integer.MIN_VALUE
aby działał z liczbami ujemnymi.