簡體   English   中英

Collections.max函數可迭代 <Integer> 在java中

[英]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中引入。

擁有一個不是CollectionIterable是很少見的。 如果你這樣做,那么它很容易實現(小心閱讀規范)。 如果您認為這非常重要,您可以在bugs.sun.com上提交RFE(如果已有,則投票)。

嗯......不,沒有。 如果你想使用Collections.max(),你必須首先將你的Iterable轉換為Collection ,可能是將所有元素添加到List (或Set ,取決於數據)。

根據定義,集合的元素必須是“可排序的”(具體來說,它們必須實現Comparable ),因為為了計算最大值,必須能夠確定一個元素是否大於另一個元素(這正是Comparable的意思) 。

Collections類中的max()方法基本上具有您在那里發布的確切類型簽名,因此它應該適合您的目的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM