java - 对整数的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
谁能帮我解决?
解决方案
您正在查看的代码仅比较每个列表中的第一个数字,因此它们最终的顺序实际上并不是按大小排列的;这是任意的。
关键是这部分
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));
}
}
}
我没有留下这个不完整的内容,因为我认为这对你来说应该是有教育意义的,如果我给你完整的答案,就没有什么可完成的。我在这里编写的代码片段只会正确比较相同长度的列表。如果第二个列表更长,额外的值将被忽略,如果第一个列表更长,则会出错。我将把它作为练习留给你解决这些问题。:-)
推荐阅读
- r - ggplot2,拼凑而成 - 轴标题的一部分被相邻地块的边缘挡住了
- javascript - 我想创建点击的脸被标记,其他脸是第二次点击的默认颜色
- reactjs - React - 调用其他组件的功能
- python - 是什么导致 c/perl/python 中的简单程序之间的大量执行时间?
- akka - 从 Akka 类型的 Actor 访问应用程序配置的最佳实践
- python - 使用导入的 pipfile 创建新的 pipenv 项目
- reactjs - 用 Bootstrap 4 反应 Toastify
- python - 尝试解密并打印出我在同一程序中加密的文本文件
- ios - 带有视频的 iOS 推送通知未在锁定屏幕上显示
- react-native - 从 Meteor 服务器检索数据