我想对整数数组的ArrayList排序,它们的长度是不同的
我尝试了这里的代码,sort an arraylist of arraylist of integers它是有效的,但它的优先顺序是长度优先,而不是值优先
例如:
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
有人能帮我解决这个问题吗?
发布于 2018-10-10 05:34:58
您正在查看的代码只比较每个列表中的第一个数字,因此它们的结束顺序实际上不是按大小排列的;它是任意的。
关键是这一部分
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));
}
}
}
我留下了这篇不完整的文章,因为我认为这对你来说是有教育意义的,如果我给你完整的答案,什么也做不了。我在这里所写的代码片段只能正确地比较相同长度的列表。如果第二个列表更长,额外的值将被忽略,如果第一个列表更长,它将出错。我将把它作为解决这些问题的练习留给您。:-)
https://stackoverflow.com/questions/52729525
复制相似问题