我遇到一个问题,即原始的2D arraylist在排序后以下列格式输出:
[639.5, 134, -2]
[639.524, 131, -1]
[640.478, 179, -2]
[647.968, 192, -2]
[649.068, 199, -2]
[65.581, 3, -1]
[66.387, 6, -1]
[66.726, 7, -1]
[660.182, 194, -1]
我想根据第一列进行排序。因此,我的预期结果应该是:
[65.581, 3, -1]
[66.387, 6, -1]
[66.726, 7, -1]
[639.5, 134, -2]
[639.524, 131, -1]
[640.478, 179, -2]
[647.968, 192, -2]
[649.068, 199, -2]
[660.182, 194, -1]
不知何故,Collections.sort()
方法对列表进行排序,就好像它是一个String,因此“0”大于“。”,不知道第一列是由double值组成的。任何人都可以帮助我吗?谢谢!
答案 0 :(得分:2)
使用Double.compare()方法.... 在此方法中传递第一列值将起作用...
例如:
在主文件中:
Collection.sort(arraylist variable,new PositionComparator());
其他课程:
public class PositionComparator implements Comparator ArrayList<ArrayList> {
public int compare(ArrayList<ArrayList> o1, ArrayList<ArrayList> o2) {
double val1, val2;
val1 = Double.parseDouble(o1.get("your first value"));
val2 = Double.parseDouble(o2.get("your second value"));
return Double.compare(val1, val2);
}
}
希望这会有所帮助......
答案 1 :(得分:0)
Collection.sort按自然顺序对列表进行排序,因此您可能希望尝试覆盖compareTo()方法