java - 如何更快地对 ArrayList 进行排序?
问题描述
我正在做一个类项目,我需要根据它们的 int 属性的值对自定义对象的 ArrayLists 进行排序。
我目前正在使用这样的东西:
public static void Sort(ArrayList <MyObject> objectList){
for (int i = 0; i < list.size()-1; i++){
for (int j = 0; j < list.size()-1; j++){
if (objectList.get(j).getA() > objectList.get(j+1).getA()){
Collections.swap(objectList, j, j+1);
}
}
}
}
如果 ArrayList 的元素少于 10^4,则程序运行良好。但如果我尝试对 10^5 个元素进行排序,则需要几分钟,我需要对 10^6 个元素进行排序。有什么建议么?
解决方案
使用List::sort
方法:
objectList.sort(Comparator.comparing(MyObject::getA));
正如@lexicore 在下面提到的,它似乎getA()
返回一个数字类型,在这种情况下,如果它返回,int
那么最好使用comparingInt
而不是comparing
上面,如果它被long
使用comparingLong
或者如果它是float
/double
则使用comparingDouble
以获得更好的性能。
推荐阅读
- azure - Azure 容器实例的“docker create”等价物是什么?
- javascript - Sqlite Node 模块输出错误的列
- symfony - 如何使用 Twig 格式化当前日期和时间?
- c# - C# WPF - 组合框 - 默认为最后选择的项目
- python - 如何从 Tkinter 中的多个条目小部件中保存多个条目?
- sql - SQL:表到键值表
- python - 得到 [ERROR] '必须为字段 [vector] 指定 [dims] 属性。' 尽管在映射中设置
- continuous-integration - Bitrise:如何将第二个“Git Clone Repository”步骤添加到工作流中?
- ios - 是否可以在单个 plist 中发送多个命令 - 苹果 MDM 协议
- python - 从 mp4 python 下载 Youtube 音频