我试图将一个简单的对象列表排序很长时间 – 以下是不起作用的,因为其中一个长字符串被推到顶部只是因为它以较低的数字开头.所以我正在寻找一种方法来直接对实际的长值进行排序
当前的obj实现类似于下面的内容.在我正在使用它的类中,我调用Collections.sort(树);
public class Tree implements Comparable<Tree> {
public String dist; //value is actually Long
public int compareTo(Tree o) {
return this.dist.compareTo(o.dist);
}
}
解决方法:
为什么不在那里存储很长时间:
public class Tree implements Comparable<Tree> {
public long dist; //value is actually Long
public int compareTo(Tree o) {
return this.dist<o.dist?-1:
this.dist>o.dist?1:0;
}
}
那或首先比较字符串的长度,然后比较它们
public String dist; //value is actually Long
public int compareTo(Tree o) {
if(this.dist.length()!=o.dist.length())
return this.dist.length()<o.dist.length()?-1:1;//assume the shorter string is a smaller value
else return this.dist.compareTo(o.dist);
}