Collections.max Java의 반복 가능한 에 대한 max 기능
-
22-07-2019 - |
문제
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 () 메소드 컬렉션 클래스에는 본질적으로 게시 한 정확한 유형 서명이 있으므로 목적에 맞아야합니다.