如何在不考虑正负值的情况下对整数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));
假设我们有一些带有值的 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));