list的stream方法
在Java 8中,List接口新增加了一个stream()方法,它是通过Stream接口来返回一个流。使用流的好处在于,可以让操作变得更加简洁、易于理解和维护。本文将详细介绍List的stream方法。
一、简介
Java 8的List接口添加了stream()方法,返回一个Stream。Stream是支持并行化处理输入的元素的序列。元素可以来自集合、数组、I/O channel,等等。Stream 提供了过滤、映射、排序、归约等操作来帮助我们对数据进行快速处理。Stream 主要有三个操作模式,分别是中间操作、终止操作和并行处理。
二、使用stream()
List集合通过stream()方法,可以将元素变成流对象进行处理,API的方法如下:
java stream ```
Stream<E> stream();
```
下面是一段示例代码:
```java
List<String> list = Arrays.asList("apple", "banana", "orange");
Stream<String> stream = list.stream();
stream.forEach(str -> System.out.println(str));
```
以上代码将list集合变成了一个流,使用forEach()方法进行遍历输出。输出结果为:
```
apple
banana
orange
```
三、中间操作
Stream 流支持大量的中间操作,它们都是按照顺序来执行的。中间操作返回的还是一个Stream流对象。
1. filter()方法
filter()方法用于对流中的元素进行筛选,返回满足条件的元素。其API的方法如下:
```
Stream<T> filter(Predicate<? super T> predicate);
```
下面是一段示例代码:
```java
List<String> list = Arrays.asList("apple", "banana", "orange");
Stream<String> stream = list.stream();
stream.filter(str -> str.length() > 5)
.forEach(str -> System.out.println(str));
```
以上代码做了一个过滤操作,只输出长度大于5的字符串,结果为:
```
banana
orange
```
2. map()方法
map()方法用于将流中的元素按照指定的方式进行转换,返回新的Stream流。其API的方法如下:
```
<R> Stream<R> map(Function<? super T, ? extends R> mapper);
```
下面是一段示例代码:
```java
List<String> list = Arrays.asList("apple", "banana", "orange");
Stream<String> stream = list.stream();
stream.map(str -> UpperCase())
.forEach(str -> System.out.println(str));
```
以上代码将流中的字符串都转化为大写形式,结果为:
```
APPLE
BANANA
ORANGE
```
3. sorted()方法
sorted()方法用于对流中的元素进行排序,按照指定的方式进行排序。其API的方法如下:
```
Stream<T> sorted();
Stream<T> sorted(Comparator<? super T> comparator);
```
下面是一段示例代码:
```java
List<Integer> list = Arrays.asList(2, 5, 1, 6, 3, 9);
Stream<Integer> stream = list.stream();
stream.sorted((a, b) -> a - b)
.forEach(num -> System.out.print(num + " "));
```
以上代码将流中的元素进行升序排序,结果为:
```
1 2 3 5 6 9
```
四、终止操作
Stream 流的终止操作是最终的操作,一旦执行后,Stream 流就无法再被使用。终止操作在执行的过程中,会对流中包含的元素进行处理,而处理的结果是一个非 Stream 类型的值。
1. forEach()方法
forEach()方法用于遍历流中的元素并对其进行操作,可以使用Lambda表达式来实现。其API的方法如下:
```
void forEach(Consumer<? super T> action);
```
下面是一段示例代码:
```java
List<String> list = Arrays.asList("apple", "banana", "orange");
Stream<String> stream = list.stream();
stream.forEach(str -> System.out.println(str));
```
以上代码使用forEach()方法输出流中的元素。
2. count()方法
count()方法用于获取流中元素的个数。其API的方法如下:
```
long count();
```
下面是一段示例代码:
```java
List<String> list = Arrays.asList("apple", "banana", "orange");
Stream<String> stream = list.stream();
long count = unt();
System.out.println(count);
```
以上代码使用count()方法获取流中元素的个数,结果为:
```
3
```
3. collect()方法
collect()方法可以将流中的元素收集到一个集合中。其API的方法如下:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论