문제

Java Collections.max는 분류 가능한 객체의 모음 만 가져갑니다. 그러나 컬렉션이 반드시 정렬되지는 않기 때문에 반복 가능한 유형에 대해 동일한 최대 기능을 구현하지 않는 이유는 없습니다.

최대 방법이 있습니까? Iterable<T extends Comparable<? super T>> Java의 표준 라이브러리에서?

도움이 되었습니까?

해결책

Collections.max 1.2로 소개되었습니다. Iterable 1.5로 소개되었습니다.

있는 것은 드문 일입니다 Iterable 그것은 아닙니다 Collection. 그렇다면 구현하는 것이 간단합니다 (사양을 읽도록주의하십시오). 당신이 정말로 중요하다고 생각되면 bugs.sun.com에 RFE를 제출할 수 있습니다 (또는 이미 거기에있는 경우 투표).

다른 팁

Guava는 Java의 표준 라이브러리가 아니지만 충분히 가깝습니다 ...

E com.google.common.collect.Ordering#max(Iterable<E> iterable)

예를 들어 T max = Ordering.natural().max(myIterable);

표준 라이브러리가 구현하지 않는 이유에 관해서는 컬렉션은 유한해야합니다, 하지만 반복 할 필요는 없습니다- 그리고 아마도 틀림없이 절대 비 터미네이션 반복으로 인해 코드가 영원히 루프가 발생하는 경우 반복 할 수 있습니다.

흠… 아니요. 사용하려면 collections.max () 당신은 당신을 변환해야합니다 반복적 인 a 수집 첫째, 아마도 모든 요소를 목록 (또는 세트, 데이터에 따라).

정의상 컬렉션의 요소는 "정렬 가능"해야합니다 (구체적으로는 구현해야합니다. Comparable) 최대 값을 계산하려면 한 요소가 다른 요소보다 큰지 여부를 해결할 수 있어야합니다 (이는 정확히 비슷한 수단).

그만큼 max () 메소드 컬렉션 클래스에는 본질적으로 게시 한 정확한 유형 서명이 있으므로 목적에 맞아야합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top