Java 如何按降序对有符号整数数组进行排序而忽略符号?

标签 java

标题是不言自明的。例如

[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/

相关文章:

java - 将 HTML 模板存储在 NoSQL DB 中

java - 如何在 Spring 中从 ResponseEntity 中提取 JSON 正文中的键/值对

Java:在运行时创建新字符串进行编辑

java - 使用语句时出现 MySQL 1064 语法错误

java - 暂时禁用 Action 监听器

java - Hibernate 搜索突出显示未分析的字段

crash - JVM 在 libzip.so 处崩溃

java - 使 GWT 应用程序与 Rest API 并排运行(在 Root 中部署 Resteasy)

java - "Back"启动mapview Activity 时不起作用

java - 使用 JSONArray 和 JSONObject 时如何摆脱类型警告