java的标准库中有
Iterable<T extends Comparable<? super T>>
的max方法吗?
E com.google.common.collect.Ordering#max(Iterable<E> iterable)
T max = Ordering.natural().max(myIterable);
集合必须是有限的,但可迭代对象不一定是有限的——并且可以说,如果一个非终止的可迭代对象应该永远不接受可迭代对象。 Iterable 会导致你的代码永远循环。
Collections.max
在1.2中引入。
Iterable
在1.5中引入。很少有
Iterable
不是
Collection
。如果您这样做,那么实施起来很简单(请仔细阅读规范)。如果您认为这确实很重要,您可以在Java Bug Database 中提交 RFE(或者投票,如果那里已经有)。
Collections.max(),你必须首先将 Iterable 转换为 Collection,可能是将所有元素添加到 List (或 Set,具体取决于数据) .
Comparable
),因为为了计算最大值,必须能够计算出一个元素是否大于另一个元素(这正是类似的手段)。Collections 类中的
max() 方法本质上具有您在其中发布的确切类型签名,因此它应该适合您的目的。