标题是不言自明的。例如
[2, 1, 0, -2, -5]
将成为
[-5, -2, 2, 1, 0]
我的策略是首先按升序对它们进行排序,然后按负数和正数分别对它们进行排序,但我的策略很模糊。我知道这很模糊,但您的回答会对我有很大帮助。
最佳答案
简短版本:
Integer[] ary = { 2, 1, 0, -2, -5 };
Arrays.sort(ary, (Integer i1, Integer i2) -> Math.abs(i2) - Math.abs(i1));
System.out.println(Arrays.toString(ary));
不需要ArrayList。但需要整数而不是 int。
我的第一个答案是:
我首先从 int[] 转换为 List< Integer >,然后使用 Lambda 比较器按照您想要的方式对其进行排序。
int[] ary = { 2, 1, 0, -2, -5 };
List<Integer> intList = new ArrayList<Integer>();
for (int index = 0; index < ary.length; index++) {
intList.add(ary[index]);
}
intList.sort((Integer i1, Integer i2) -> Math.abs(i2) - Math.abs(i1));
System.out.println(intList);
返回
[-5, 2, -2, 1, 0]
关于Java 如何按降序对有符号整数数组进行排序而忽略符号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40207325/