나는 목록을 가지고 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 );