stream的用法
时间: 2023-08-31 11:23:39 浏览: 50
Stream 是 Java 8 中引入的一种新的数据处理方式,它可以用更为简洁、易读的方式来操作集合中的数据,提高了程序的可读性和可维护性。Stream 可以用于对集合中的数据进行过滤、映射、排序、统计等一系列操作。
下面是 Stream 的一些常用用法:
1. 过滤:使用 filter 方法可以过滤集合中的元素,例如:
```
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
List<Integer> result = list.stream().filter(x -> x > 3).collect(Collectors.toList());
```
上述代码可以过滤出大于 3 的元素。
2. 映射:使用 map 方法可以将集合中的元素按照一定的规则进行映射,例如:
```
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
List<Integer> result = list.stream().map(x -> x * 2).collect(Collectors.toList());
```
上述代码可以将集合中的元素都乘以 2。
3. 排序:使用 sorted 方法可以对集合中的元素进行排序,例如:
```
List<Integer> list = Arrays.asList(5, 4, 3, 2, 1);
List<Integer> result = list.stream().sorted().collect(Collectors.toList());
```
上述代码可以对集合中的元素进行升序排序。
4. 统计:使用 count、sum、average、max、min 方法可以对集合中的元素进行统计,例如:
```
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
long count = list.stream().count();
int sum = list.stream().mapToInt(x -> x).sum();
OptionalDouble average = list.stream().mapToDouble(x -> x).average();
Optional<Integer> max = list.stream().max(Integer::compareTo);
Optional<Integer> min = list.stream().min(Integer::compareTo);
```
上述代码可以分别统计集合中元素的数量、总和、平均值、最大值、最小值。
Stream 还有很多其他的用法,例如分组、分区、合并等,可以根据具体的业务需求来进行使用。需要注意的是,Stream 的操作都是惰性求值的,只有在终止操作时才会进行计算,因此可以提高程序的性能。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)