stream list集合去重合并排序
时间: 2023-07-07 19:06:03 浏览: 76
假设你有两个 stream list 集合,可以使用 Java 8 中的 Stream API 对它们进行去重、合并和排序:
```java
List<String> list1 = Arrays.asList("apple", "banana", "orange");
List<String> list2 = Arrays.asList("banana", "pear", "grape");
List<String> mergedList = Stream.concat(list1.stream(), list2.stream())
.distinct()
.sorted()
.collect(Collectors.toList());
System.out.println(mergedList);
```
输出结果为:
```
[apple, banana, grape, orange, pear]
```
这个例子首先使用 `Stream.concat` 方法将两个集合合并成一个 stream,然后使用 `distinct` 方法去重,再使用 `sorted` 方法排序,最后使用 `collect` 方法将结果收集到一个新的 list 中。
相关问题
java的stream流使用
Java中的Stream流是一个强大的新特性,它提供了一种处理集合数据的方式,可以进行过滤、映射、排序等操作。下面是一些常见的使用方法:
1. 创建一个Stream流:
- 通过集合创建:`List<String> list = Arrays.asList("apple", "banana", "orange"); Stream<String> stream = list.stream();`
- 通过数组创建:`String[] array = {"apple", "banana", "orange"}; Stream<String> stream = Arrays.stream(array);`
- 通过Stream.of()方法创建:`Stream<String> stream = Stream.of("apple", "banana", "orange");`
2. 过滤元素:
- 使用filter()方法根据条件过滤元素:`stream.filter(e -> e.startsWith("a"))`
- 使用distinct()方法去重:`stream.distinct()`
3. 转换元素:
- 使用map()方法将元素进行映射:`stream.map(e -> e.toUpperCase())`
- 使用flatMap()方法将多个流合并成一个流:`stream.flatMap(e -> Stream.of(e.split(" ")))`
4. 排序:
- 使用sorted()方法对元素进行排序:`stream.sorted()`
- 可以传入Comparator自定义排序规则:`stream.sorted(Comparator.comparingInt(String::length))`
5. 终止操作:
- 使用forEach()方法遍历元素:`stream.forEach(System.out::println)`
- 使用collect()方法将流转换为集合或数组:`List<String> result = stream.collect(Collectors.toList())`
- 使用reduce()方法将流中元素进行规约:`Optional<String> result = stream.reduce((s1, s2) -> s1 + ", " + s2)`
这只是Stream流的一部分常见用法,还有很多其他方法可以用于处理集合数据。希望对你有所帮助!
jdk 1.8 stream 常用方法及场景示例
JDK 1.8 Stream 是 Java 8 中引入的一种新型集合类型,可以让我们更方便地对集合进行操作。以下是 JDK 1.8 Stream 常用方法及场景示例:
1. filter() 方法:过滤集合中的元素
示例代码:
```java
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
List<Integer> result = list.stream().filter(x -> x > 3).collect(Collectors.toList());
```
这段代码会将集合中大于 3 的元素筛选出来,最终得到一个新的集合 [4, 5]。
2. map() 方法:对集合中的每个元素进行操作,并返回新的集合
示例代码:
```java
List<String> list = Arrays.asList("apple", "banana", "orange");
List<String> result = list.stream().map(x -> x.toUpperCase()).collect(Collectors.toList());
```
这段代码会将集合中的每个元素转换成大写字母,并返回一个新的集合 ["APPLE", "BANANA", "ORANGE"]。
3. flatMap() 方法:将多个集合合并成一个集合,并去重
示例代码:
```java
List<List<Integer>> list = Arrays.asList(Arrays.asList(1, 2), Arrays.asList(3, 4));
List<Integer> result = list.stream().flatMap(x -> x.stream()).distinct().collect(Collectors.toList());
```
这段代码会将多个集合合并成一个集合,并去除重复元素,最终得到一个新的集合 [1, 2, 3, 4]。
4. reduce() 方法:对集合中的元素进行归约操作
示例代码:
```java
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
int result = list.stream().reduce(0, (x, y) -> x + y);
```
这段代码会对集合中的元素进行求和,最终得到结果 15。
5. sorted() 方法:对集合中的元素进行排序
示例代码:
```java
List<Integer> list = Arrays.asList(5, 3, 1, 4, 2);
List<Integer> result = list.stream().sorted().collect(Collectors.toList());
```
这段代码会对集合中的元素进行升序排序,最终得到一个新的集合 [1, 2, 3, 4, 5]。