java 用stream流 对集合排序
时间: 2023-11-07 18:14:30 浏览: 71
使用Java 8中的Stream流可以很方便地对集合进行排序,具体步骤如下:
1. 创建一个集合对象,比如List。
例如:
```
List<Integer> list = new ArrayList<>();
list.add(3);
list.add(1);
list.add(2);
```
2. 通过stream()方法将集合转换成流对象。
例如:
```
Stream<Integer> stream = list.stream();
```
3. 调用sorted()方法对流中的元素进行排序,默认是升序排序,也可以传入一个Comparator对象来实现自定义排序。
例如:
```
stream.sorted().forEach(System.out::println); // 输出 1 2 3
```
完整代码示例:
```
List<Integer> list = new ArrayList<>();
list.add(3);
list.add(1);
list.add(2);
Stream<Integer> stream = list.stream();
stream.sorted().forEach(System.out::println); // 输出 1 2 3
```
相关问题
javastream流集合排序
Java Stream API 提供了一种强大的、内存友好的方式来进行数据处理,包括排序。如果你想对Stream中的集合元素进行排序,可以使用 `sorted()` 或 `distinct().sorted()` 方法。
`sorted()` 方法用于对元素进行自然顺序排序,如果需要自定义排序规则,可以传入一个Comparator:
```java
List<Integer> numbers = Arrays.asList(5, 2, 8, 1);
numbers.stream()
.sorted(Comparator.comparingInt(Integer::valueOf)) // 自定义排序规则
.collect(Collectors.toList()); // 获取排序后的列表
```
如果你想先去重再排序,可以使用 `distinct().sorted()`:
```java
Set<String> uniqueNames = names.stream() // 假设names是一个包含重复字符串的集合
.distinct()
.sorted(String::compareTo) // 使用String的自然排序
.collect(Collectors.toSet());
```
这两个操作都不会改变原有的集合,而是返回一个新的已排序的结果。
java stream流集合 自定义排序
要在Java Stream流集合中进行自定义排序,可以使用`sorted`方法结合`Comparator`来实现。以下是一个示例代码:
```java
List<Integer> numbers = Arrays.asList(5, 3, 8, 2, 1, 9);
List<Integer> sortedNumbers = numbers.stream()
.sorted(Comparator.reverseOrder()) // 使用逆序排序
.collect(Collectors.toList());
System.out.println(sortedNumbers); // 输出: [9, 8, 5, 3, 2, 1]
```
在上面的示例中,我们先创建了一个包含整数的列表`numbers`。然后,我们使用`stream`方法将列表转换为流,并使用`sorted`方法进行排序。在这个例子中,我们使用了`Comparator.reverseOrder()`来实现逆序排序。最后,我们使用`collect`方法将流转换回列表并将结果打印出来。
阅读全文