基于嵌套arraylist的第一个元素对2D arraylist进行排序

时间:2012-03-13 06:19:08

标签: java list sorting arraylist 2d

我遇到一个问题,即原始的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值组成的。任何人都可以帮助我吗?谢谢!

2 个答案:

答案 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()方法