首页 > 解决方案 > 对整数的arraylist的arrylist进行排序不取决于它们在java中的长度

问题描述

我想对 Integer Arraylist 的 ArrayList 进行排序,它们的长度 是
不同


例如:
2, 2 , 2, 3
2, 2, 3, 4
2, 2, 90
它的输出将是这样的:
2, 2, 90
2, 2, 2, 3
2, 2, 3, 4
而我想要的顺序:
2、2、2、3
2、2、3、4
2、2、90
谁能帮我解决?

标签: java

解决方案


您正在查看的代码仅比较每个列表中的第一个数字,因此它们最终的顺序实际上并不是按大小排列的;这是任意的。

关键是这部分

public int compare(List<Integer> o1, List<Integer> o2) {
    return o1.get(0).compareTo(o2.get(0));
}

你需要类似的东西

public int compare(List<Integer> o1, List<Integer> o2) {
    for (int i = 0; i < o1.size(); i++) {
        if (o1.get(i).compareTo(o2.get(i)) != 0) {
            return o1.get(i).compareTo(o2.get(i));
        }
    }
}

我没有留下这个不完整的内容,因为我认为这对你来说应该是有教育意义的,如果我给你完整的答案,就没有什么可完成的。我在这里编写的代码片段只会正确比较相同长度的列表。如果第二个列表更长,额外的值将被忽略,如果第一个列表更长,则会出错。我将把它作为练习留给你解决这些问题。:-)


推荐阅读