Java List<Double> 排序代码
时间: 2023-03-06 09:38:24 浏览: 166
可以使用Collections.sort()方法来排序List<Double>,具体代码如下:List<Double> list = new ArrayList<Double>();
//填入要排序的数据
Collections.sort(list);
相关问题
List<Double>排序
List<Double>是Java集合框架中的一个列表,其中元素都是Double类型。如果你想对这样的列表进行排序,Java提供了一些内置的排序方法。以下是几种常见的操作:
1. **自然排序(默认)**: 如果你的List只存储基本类型的Double,你可以直接使用Collections.sort()方法,它会按数字顺序对元素进行排序。例如:
```java
List<Double> list = Arrays.asList(3.5, 1.0, 2.7, 4.8);
Collections.sort(list);
```
现在,list将是 `[1.0, 2.7, 3.5, 4.8]`。
2. **自定义排序**: 如果需要按照某个规则(比如降序或基于另一个属性)进行排序,可以提供一个Comparator。例如,按照降序排序:
```java
list.sort((a, b) -> -Math.compare(a, b));
```
3. **使用Java 8的Stream API**: 使用stream().sorted()方法,这允许你在一行代码内完成排序,例如:
```java
list = list.stream()
.sorted(Double::compareTo, Collections.reverseOrder())
.collect(Collectors.toList());
```
这里,`Double::compareTo`用于升序排序,`Collections.reverseOrder()`用于降序。
4. **使用ArrayList.sort()**: 如果List是ArrayList,可以直接调用sort()方法,但请注意这个操作会改变原列表:
```java
ArrayList<Double> arrayList = new ArrayList<>(list);
arrayList.sort(null); // 自然排序,或传入Comparator对象进行自定义排序
```
注意,以上操作都会在内存中实时排序整个列表,如果列表很大,可能会消耗较多时间。对于性能要求高的场景,可以选择使用TreeSet或者PriorityQueue,它们内部已经实现了排序。
Map<List<Node>,Map<Double,LinkedList<Node>>>对于该集合如何实现依据double降序存储
要实现对于Map<Double,LinkedList<Node>>按照double降序存储,可以使用TreeMap来代替Map。TreeMap是一个有序的键值对集合,它根据键的自然顺序进行排序,或者使用自定义的Comparator进行排序。
在这种情况下,可以使用TreeMap<Double,LinkedList<Node>>来存储数据。当插入数据时,可以通过传入一个自定义的Comparator来实现按照double降序排序。
以下是示例代码:
```java
Map<List<Node>, TreeMap<Double, LinkedList<Node>>> map = new HashMap<>();
Comparator<Double> descendingOrder = (a, b) -> Double.compare(b, a);
TreeMap<Double, LinkedList<Node>> treeMap = new TreeMap<>(descendingOrder);
// 向treeMap中插入数据
treeMap.put(1.5, new LinkedList<>());
treeMap.put(3.2, new LinkedList<>());
treeMap.put(2.7, new LinkedList<>());
// 将treeMap放入map中
map.put(new ArrayList<>(), treeMap);
```
这样,map中的treeMap将会按照double降序存储。
阅读全文