我遇到一个问题,原始的 2D 数组列表在排序后以以下格式输出:
[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()
方法对列表进行排序,就好像它是一个字符串一样,因此“0”比“.”大,不知道第一列由 double 值组成。有人可以帮助我吗?谢谢!
最佳答案
使用 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);
}
}
希望这会有所帮助...
关于java - 根据嵌套数组列表的第一个元素对二维数组列表进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9679233/