hooyantsing's Blog

27_Stream流式计算

字数统计: 381阅读时长: 1 min
2020/08/28

27 Stream流式计算

狂神说Java JUC并发编程最新版通俗易懂

流嘛,就是方法所有的元素都将执行一遍,就像是河流流过水车一样。

Stream常用方法

前提:熟练使用函数式接口,如4种类型接口 _(详见 25 函数型接口、断定型接口、消费型接口和供给型接口)_。

stream() 转换为 Stream 流。想要使用 Stream 首先使用这个方法。

filter(Predicate) 过滤器,参数是 Predicate 断定型接口 填写规则。

map(Function) 映射,参数是 Function 函数型接口 填写规则。

sorted(Comparator) 排序,参数填写比较规则。

forEach 参数是 Consumer 消费型接口

案例

Stream 计算。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
package stream;

import java.util.Arrays;
import java.util.List;

public class Test {
public static void main(String[] args) {
User u1 = new User(1,"a",21);
User u2 = new User(2,"b",22);
User u3 = new User(3,"c",23);
User u4 = new User(4,"d",24);
User u5 = new User(6,"e",25);

// Arrays.asList -> ArrayList
List<User> list = Arrays.asList(u1,u2,u3,u4,u5);

/**
* 条件:
* 1.编号为偶数
* 2.年龄必须大于23岁
* 3.用户名转为大写字母
* 4.用户名字母倒着排序
* 5.只输出一个用户
*/
// Stream
list.stream() // list 转为 stream流
.filter(u -> u.getId() % 2 == 0) // 过滤 Predicate *断定型接口
.filter(u -> u.getAge() > 23)
.map(u -> u.getName().toUpperCase()) // 映射 Function *函数型接口
.sorted((user1,user2) -> user2.compareTo(user1)) // 排序 Comparator 排序接口,排序规则
.forEach(System.out::println); // Consumer *消费型接口

}
}
CATALOG
  1. 1. 27 Stream流式计算
    1. 1.0.1. Stream常用方法
    2. 1.0.2. 案例