gpt4 book ai didi

java - 在 java 中对 ArrayList 的数组进行排序

转载 作者:行者123 更新时间:2023-11-30 08:53:08 28 4
gpt4 key购买 nike

我想按 ArrayLists 元素的第一个 int 对 ArrayList 的 Array 进行排序。我试图重写 Comparator 类的比较方法,但它抛出:

Exception in thread "main" java.lang.NullPointerException
at BikeGA$1.compare(BikeGA.java:515)
at BikeGA$1.compare(BikeGA.java:1)
at java.util.TimSort.countRunAndMakeAscending(TimSort.java:351)
at java.util.TimSort.sort(TimSort.java:230)
at java.util.Arrays.sort(Arrays.java:1438)
at BikeGA.main(BikeGA.java:512)

代码是:

int max_generations = 20;
static ArrayList<Integer>[] population = new ArrayList[max_generations];

Arrays.sort(population, new Comparator<ArrayList<Integer>>(){
@Override
public int compare(final ArrayList<Integer> entry1, final ArrayList<Integer> entry2){
return entry1.get(0).compareTo(entry2.get(0));
}
});

有人可以帮助我吗?谢谢。

最佳答案

您的比较器应该处理 null 或空的 ArrayList,以便它可以处理您放入数组中的任何数据:

    @Override
public int compare(final ArrayList<Integer> entry1, final ArrayList<Integer> entry2){
if (entry1 == null && entry2 == null)
return 0;
if (entry1 == null)
return 1;
if (entry2 == null)
return -1;
if (entry1.isEmpty() && entry2.isEmpty())
return 0;
if (entry1.isEmpty())
return 1;
if (entry2.isEmpty())
return -1;
return entry1.get(0).compareTo(entry2.get(0));
}

这会将空元素放在数组的末尾,空列表放在它们之前。

关于java - 在 java 中对 ArrayList<Integer> 的数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29890128/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com