【发布时间】:2011-05-30 12:01:28
【问题描述】:
我正在尝试按 long 对简单的对象列表进行排序 - 下面的内容不起作用,因为其中一个长字符串被推到顶部只是因为它以较低的数字开头。所以我正在寻找一种方法来直接按实际长值对它们进行排序
当前的 obj 实现如下所示。在我使用这个的类中,我调用 Collections.sort(trees);
public class Tree implements Comparable<Tree> {
public String dist; //value is actually Long
public int compareTo(Tree o) {
return this.dist.compareTo(o.dist);
}
}
【问题讨论】:
-
为什么不在 compareTo(Tree o) 方法中比较
dist的长值? -
字符串是按字母顺序比较的(不是真的,但这是一种很好的思考方式)。因此,12 > 111。如果您需要比较数字,请使用数字,即再添加一个字段。或者在最坏的情况下比较 Long.parseLong(dist) 的结果
-
事实证明,我实际上一直在比较双倍 - 抱歉,伙计们(使用 Double.compare 作为我的实际解决方案)授予了我认为对 Long 问题的一个很好的答案 - 将其标记为如果没有别的,则删除
-
使用'Long.compare(long x, long y)',见下方答案
标签: java sorting comparable