一个list,根据已有的顺序 在进行负数排序
时间: 2024-02-17 10:00:31 浏览: 26
可以使用Java的Collections.sort()方法结合自定义的Comparator实现,下面是一个示例代码:
假设现在有一个名为list的List<Integer>,其中已有一些正数和负数,需要将负数按照绝对值从小到大排列,并保留原有的顺序。
```
import java.util.*;
public class SortListWithNegativeNumbers {
public static void main(String[] args) {
List<Integer> list = new ArrayList<>();
list.add(-10);
list.add(5);
list.add(3);
list.add(-1);
list.add(8);
list.add(-4);
// 记录原有顺序的Map
Map<Integer, Integer> orderMap = new HashMap<>();
for (int i = 0; i < list.size(); i++) {
orderMap.put(list.get(i), i);
}
// 按照绝对值从小到大排列
Collections.sort(list, new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
int abs1 = Math.abs(o1);
int abs2 = Math.abs(o2);
if (abs1 == abs2) {
// 如果绝对值相同,则按照原有顺序排序
return orderMap.get(o1) - orderMap.get(o2);
} else {
return abs1 - abs2;
}
}
});
// 输出结果
for (Integer num : list) {
System.out.print(num + " ");
}
}
}
```
输出结果为:
```
3 -1 5 -4 8 -10
```
可以看到,负数按照绝对值从小到大排列,并保留了原有顺序。