[java-8] Java 8에서 스트림을 사용하여 정수에서 최대 값을 찾는 방법은 무엇입니까?

나는 목록을 가지고 Integer list와에서 list.stream()나는 최대 값을합니다. 가장 간단한 방법은 무엇입니까? 비교기가 필요합니까?



답변

스트림을 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 = 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 );