仅对具有绝对值的数组排序并显示实际值

Shi*_*ari -6 java

打印绝对排序数组。请参阅示例输出以进行澄清。

输入:

9 -2 10 3 -5 34 -22 7
Run Code Online (Sandbox Code Playgroud)

我想要输出:

-2 3 -5 7 9 10 -22 34
Run Code Online (Sandbox Code Playgroud)

我尝试过 Arrays.sort(a[]);

请帮助我:

谢谢

Ban*_*ore 6

使用Java 8,您可以像这样使用lambda和Math.abs:

Integer[] array = {9,-2,10,3,-5,34,-22,7};
Arrays.sort(array, (a,b) -> (Integer.compare( Math.abs(a),  Math.abs(b))));
Stream.of(array).forEach(a ->  System.out.println(a));
Run Code Online (Sandbox Code Playgroud)

感谢4castle的建议。或使用比较器

Arrays.sort(array, Comparator.comparingInt(Math::abs));
Run Code Online (Sandbox Code Playgroud)

  • 您可以使用Comparator.comparingInt(Math :: abs)代替lambda。 (2认同)
  • `Arrays.sort(array, Comparator.comparingInt(Math::abs));` 不能用 DrJava 为我编译。给出错误 * 类型 java.util.Comparator 中的方法 compareInt(java.util.function.ToIntFunction<? super T>) 不适用于参数 (Math::abs)* (2认同)