首页 > 解决方案 > 如何更快地对 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 个元素进行排序。有什么建议么?

标签: javaperformancesortingarraylist

解决方案


使用List::sort方法:

objectList.sort(Comparator.comparing(MyObject::getA));

正如@lexicore 在下面提到的,它似乎getA()返回一个数字类型,在这种情况下,如果它返回,int那么最好使用comparingInt而不是comparing上面,如果它被long使用comparingLong或者如果它是float/double则使用comparingDouble 以获得更好的性能。


推荐阅读