// Assuming that Foo implements Comparable<Foo>
List<Foo> fooList = ...;
Foo maximum = Collections.max(fooList);
// Normally Foos are compared by the size of their baz, but now we want to
// find the Foo with the largest gimblefleck.
Foo maxGimble = Collections.max(fooList, new Comparator<Foo>() {
@Override
public int compare(Foo first, Foo second) {
if (first.getGimblefleck() > second.getGimblefleck())
return 1;
else if (first.getGimblefleck() < second.getGimblefleck())
return -1;
return 0;
}
});
7条答案
按热度按时间u0sqgete1#
假设
Foo
不是一个内部类compare()
方法存在于名为CompareClass
您可以执行以下操作:因此
fooList
方法呢compare
作为输入Collections.max()
并返回Foo
对象的最大值-根据您的比较方法。qxgroojn2#
是的,列表是collection的一个子类,因此可以使用max方法。
ojsjcaue3#
看看googlecollections——它们有很多方法可以帮助您使用 predicate 来完成这类工作。
zujrkrfu4#
如果
Foo
工具Comparable<Foo>
,那么Collections.max(Collection)
就是你要找的。如果没有,可以创建
Comparator<Foo>
使用Collections.max(Collection, Comparator)
相反。示例
laik7k3q5#
尝试
java.util.Collections.max
iklwldmw6#
看看兰姆达吉。在函数样式中有许多特性可以操作集合。
qybjjes17#
使用
Collections#max(Collection)
.