如何在不考虑正负值的情况下对整数ArrayList进行排序

How to sort ArrayList of integers without regardless of positive and negative values

假设我们有一些带有值的 ArrayList:

List<Integer> list = new ArrayList<Integer>(40);
list.add(5);
list.add(-5);
list.add(-1);
list.add(10);
list.add(-12);

自然排序将是:[-12,-5,-1,5,10] 和 Collections.sort(list)

但是我怎样才能 "ignore"(对不起定义)负值和正值并得到以下结果:[-1,-5,5,10,-12]?

之前感谢您抽空回答我的问题。

您可以使用 Math.abs() 函数:

    Collections.sort(list, new Comparator<Integer>() {
        public int compare(Integer o1, Integer o2) {
            return Integer.compare(Math.abs(o1), Math.abs(o2));
        }
    });

或者 java-8 的 lambda:

Collections.sort(list,(o1, o2) -> Integer.compare(Math.abs(o1), Math.abs(o2)));

或者更简单,准备好一个out-of-the-box比较器:

Collections.sort(list, Comparator.comparingInt(Math::abs));

如果我们至少在谈论 java-8,最简单的就是:

list.sort(Comparator.comparingInt(Math::abs));