在java中对ArrayList <integer>的数组进行排序

时间:2015-04-27 07:55:10

标签: java arrays sorting arraylist compare

我想通过ArrayLists元素的第一个int对ArrayList数组进行排序。 我试图覆盖Comparator类的比较方法,但它抛出:

FlatFileItemReader

代码是:

doRead

有人能帮助我吗? 感谢。

2 个答案:

答案 0 :(得分:2)

你的比较器应该处理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));
    }

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

答案 1 :(得分:0)

您正在比较2个数组,但不检查比较对象是否存在...

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){
            Integer value1 = entry1.get(0) == null : -1 ? entry1.get(0);
            Integer value2 = entry2.get(0) == null : -1 ? entry2.get(0);

            return value1.compareTo(value2);
        }
    });