【问题标题】:How to sort ArrayList of integers without regardless of positive and negative values [duplicate]如何在不考虑正负值的情况下对整数的ArrayList进行排序[重复]
【发布时间】:2017-01-27 09:12:29
【问题描述】:

假设我们有一些带有值的 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)

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

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

【问题讨论】:

  • 写一个使用Math.absComparator
  • 你做过什么研究吗?
  • @KevinWallis 显然他尝试通过Collections.sort() 对其进行排序。
  • 我提名重新提出这个问题,因为在 java-8 中排序列表的方式与排序简单数组相比略有不同,而且更方便
  • @Andremoniy 借助 Mjollnir 的力量,它完成了!

标签: java sorting comparator comparable


【解决方案1】:

您可以使用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)));

或者更简单,有一个现成的比较器:

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

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

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

【讨论】:

  • 感谢您的快速答复。我真的被困住了。祝你有美好的一天。
猜你喜欢
  • 2016-07-18
  • 2023-03-18
  • 2019-08-27
  • 1970-01-01
  • 2017-05-07
  • 2011-04-12
  • 1970-01-01
  • 1970-01-01
  • 2019-12-04
相关资源
最近更新 更多