我有一个ArrayList中包含以下对象:
public class Foo implements Comparable<Foo> {
...
private ArrayList<Double> coordinates;
...
}
我在我的主类中有一个输出两个点之间距离的方法:
p2pDistance(Foo x, Foo b)
我想要做的是根据调用p2pDistance(root,elem)
(其中root是Foo实例,不在原始列表中)所给的值对列表进行排序。
我的尝试是以下内容:
data.sort((o1, o2) -> (int) p2pDistance(root, o1));
(或等价的非Lambda表达式):
data.sort(new Comparator<Foo>() {
@Override
public int compare(Foo o1, Foo o2) {
return (int) Main.this.p2pDistance(root, o1);
}
});
然而,这种方法并没有起作用。我的猜测是创建一个循环遍历列表并保留最小结果的方法,但我想知道为什么我的方法不起作用,是否仍有优雅的解决方案。(无需通过循环遍历列表来查找最低结果)