stream所有的方法
时间: 2023-10-25 21:08:01 浏览: 48
Stream流中的flatMap方法是一种中间操作,它可以将一个流中的每一个元素转换成一个新的流,然后将这些流合并成一个流。这样做的好处是可以对每一个元素进行独立的操作,并且可以减少冗余的数据。
例如:
Stream<List<Integer>> inputStream = Stream.of(Arrays.asList(1, 2), Arrays.asList(3, 4), Arrays.asList(5, 6));
Stream<Integer> outputStream = inputStream.flatMap(Collection::stream);
outputStream.forEach(System.out::println);
//output: 1,2,3,4,5,6
在这个例子中,flatMap把inputStream中的每一个List转换成一个Integer流,然后把这些流合并成一个输出流。
相关问题
Stream流所有方法详解
Stream 是 Java 8 引入的一个新特性,它可以用来处理集合或数组等数据源中的元素。Stream 提供了一种更加优雅、高效的方式来处理数据,代码可读性更强、更易维护。在 Stream 中,操作是延迟执行的,只有当需要结果的时候才会进行计算,这样就可以避免不必要的计算,提高程序的性能。
下面是 Stream 中常用的方法:
1. filter:过滤操作
该方法可以根据给定的条件过滤出符合条件的元素,返回一个新的 Stream。
```
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
Stream<Integer> stream = list.stream().filter(i -> i % 2 == 0); // 过滤出偶数
```
2. map:映射操作
该方法可以将 Stream 中的每个元素按照给定的规则进行映射,返回一个新的 Stream。
```
List<String> list = Arrays.asList("hello", "world", "java");
Stream<String> stream = list.stream().map(String::toUpperCase); // 将字符串转换为大写
```
3. flatMap:扁平化操作
该方法可以将一个包含多个 Stream 的 Stream 扁平化为一个单一的 Stream。
```
List<List<Integer>> list = Arrays.asList(Arrays.asList(1, 2), Arrays.asList(3, 4), Arrays.asList(5, 6));
Stream<Integer> stream = list.stream().flatMap(Collection::stream); // 将多个 Stream 扁平化成一个 Stream
```
4. distinct:去重操作
该方法可以去除 Stream 中重复的元素,返回一个新的 Stream。
```
List<Integer> list = Arrays.asList(1, 2, 3, 2, 1);
Stream<Integer> stream = list.stream().distinct(); // 去重
```
5. sorted:排序操作
该方法可以对 Stream 中的元素进行排序,返回一个新的 Stream。
```
List<Integer> list = Arrays.asList(3, 1, 2, 5, 4);
Stream<Integer> stream = list.stream().sorted(); // 排序
```
6. limit:截取操作
该方法可以截取 Stream 前面的 N 个元素,返回一个新的 Stream。
```
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
Stream<Integer> stream = list.stream().limit(3); // 截取前面的三个元素
```
7. skip:跳过操作
该方法可以跳过 Stream 前面的 N 个元素,返回一个新的 Stream。
```
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
Stream<Integer> stream = list.stream().skip(3); // 跳过前面的三个元素
```
8. forEach:遍历操作
该方法可以对 Stream 中的每个元素进行操作,没有返回值。
```
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
list.stream().forEach(System.out::println); // 输出每个元素
```
9. count:计数操作
该方法可以返回 Stream 中元素的个数。
```
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
long count = list.stream().count(); // 计算元素的个数
```
10. reduce:归约操作
该方法可以将 Stream 中的所有元素按照给定的规则进行归约,返回一个 Optional 类型的结果。
```
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
Optional<Integer> result = list.stream().reduce((a, b) -> a + b); // 对元素求和
```
这些方法只是 Stream 中的一部分,Stream 还有很多其他的方法,可以根据具体需求进行选择和使用。
stream map方法
stream中的map方法类似于一个迭代器,可以对调用该方法的Stream对象进行lambda表达式操作,将元素类型转化为其他类型。使用map方法可以将一个Stream中的元素逐个传入lambda表达式中进行处理,并返回一个处理后的新Stream。
通过map方法,我们可以对Stream中的每个元素进行一定的转换操作,例如将一个整数Stream转换为对应的字符串Stream,或者将一个对象Stream转换为对应的某个属性的Stream等。
举个例子,假设有一个整数类型的Stream,我们想将其中的每个元素都乘以2,可以使用map方法如下:
```
Stream<Integer> numberStream = Stream.of(1, 2, 3, 4, 5);
Stream<Integer> resultStream = numberStream.map(num -> num * 2);
```
在这个例子中,map方法接受一个lambda表达式`num -> num * 2`,该表达式将Stream中的每个元素都乘以2。最终得到的结果是一个新的Stream对象`resultStream`,其中每个元素都是原来的元素乘以2后的结果。
相关推荐
![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)