【发布时间】:2018-08-13 19:40:19
【问题描述】:
我在 ArrayList 中有这些对象:
public class Foo implements Comparable<Foo> {
...
private ArrayList<Double> coordinates;
...
}
我的主类中有一个方法可以输出两点之间的距离:
p2pDistance(Foo x, Foo b)
我要做的是根据通过调用p2pDistance(root,elem) root 给出的值对列表进行排序,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);
}
});
但是,这最终不起作用。 我的猜测是制作一个循环遍历列表并保留最小结果的方法,但我想知道为什么我的方法不起作用,以及是否还有一个优雅的解决方案。 (不必遍历列表并找到最低的结果)。
【问题讨论】:
标签: java list sorting arraylist comparator