java - 根据嵌套数组列表的第一个元素对二维数组列表进行排序

标签 java list sorting arraylist 2d

我遇到一个问题,原始的 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/

相关文章:

java - 简单的自定义 Swing JComponent 总是平坦的

java - 要比较 UUID,我可以使用 == 还是必须使用 UUID.equals(UUID)?

java - 这个递归函数的答案是什么?

Java JDI 转换为实际的真实类型

java - 推土机,Java : How to convert from List<List> to 2D Array?

python - 比较两个列表,如果相等则替换第三个列表中的值

python - python中列表中列表的频率

python - 基于特定元素对列表进行排序 - Python

C 尝试在数组中搜索特定数字

java - 为休息服务实现 JUnit 测试