[英]maximal element in an array in Java (Collections.max() for integer arrays int[])
[英]Collections.max function for iterable<Integer> in java
Java Collections.max僅采用可排序對象的集合。 但是,由於集合不一定排序,我認為沒有任何理由不為可迭代類型實現相同的max函數。
是否存在Iterable<T extends Comparable<? super T>>
的最大方法Iterable<T extends Comparable<? super T>>
Iterable<T extends Comparable<? super T>>
在java的標准庫中?
雖然Guava不是Java的標准庫,但它足夠接近......
E com.google.common.collect.Ordering#max(Iterable<E> iterable)
例如T max = Ordering.natural().max(myIterable);
至於為什么標准庫沒有實現它,可能是因為Collection必須是有限的 ,但是Iterable不一定是 - 並且可以說,如果非終止Iterable會導致你的代碼循環,那么永遠不應該接受Iterable永遠。
Collections.max
於1.2中引入。 Iterable
在1.5中引入。
擁有一個不是Collection
的Iterable
是很少見的。 如果你這樣做,那么它很容易實現(小心閱讀規范)。 如果您認為這非常重要,您可以在bugs.sun.com上提交RFE(如果已有,則投票)。
嗯......不,沒有。 如果你想使用Collections.max(),你必須首先將你的Iterable轉換為Collection ,可能是將所有元素添加到List (或Set ,取決於數據)。
根據定義,集合的元素必須是“可排序的”(具體來說,它們必須實現Comparable
),因為為了計算最大值,必須能夠確定一個元素是否大於另一個元素(這正是Comparable的意思) 。
Collections類中的max()方法基本上具有您在那里發布的確切類型簽名,因此它應該適合您的目的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.