本文通过案例,介绍了java 1.8 lambda表达式常用的一些方法及使用场景
后续会继续扩展
先定义一个People类
复制代码
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76public class People { private Integer id; /** * 姓名 */ private String name; /** * 性别 */ private Integer sex; /** * 所属省份 */ private String province; /** * 存款 */ private Integer money; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getMoney() { return money; } public void setMoney(Integer money) { this.money = money; } public String getProvince() { return province; } public void setProvince(String province) { this.province = province; } public Integer getSex() { return sex; } public void setSex(Integer sex) { this.sex = sex; } @Override public String toString() { return "People{" + "id=" + id + ", name='" + name + ''' + ", sex=" + sex + ", province='" + province + ''' + ", money=" + money + '}'; } }
有个People的list, 使用lambda表达式依次做以下操作
循环操作
复制代码
1
2
3
4peopleArrayList.forEach(item -> { // doSomething });
筛选属性
场景: 将所有的人员id取出来
复制代码
1
2List<Integer> peopleIds = peopleArrayList.stream().map(people -> people.getId()).collect(Collectors.toList());
去重
场景: 将所有的人员id取出来并去重
复制代码
1
2List<Integer> peopleIds = peopleArrayList.stream().map(people -> people.getId()).distinct().collect(Collectors.toList());
过滤
场景: 过滤出性别为男或女的人员
复制代码
1
2List<People> peopleList = peopleArrayList.stream().filter(p -> p.getSex() == 0).collect(Collectors.toList());
排序
场景: 按id大小倒序排序(从小到大)
复制代码
1
2peopleArrayList.sort((p1, p2) -> p2.getId().compareTo(p1.getId()));
分组
场景1: 按性别分组 (单字段)
复制代码
1
2Map<Integer, List<People>> peopleMap = peopleArrayList.stream().collect(Collectors.groupingBy(People::getSex));
场景2: 按性别和省份分组 (多字段)
复制代码
1
2Map<String, List<People>> peopleMap = peopleArrayList.stream().collect(Collectors.groupingBy(people -> people.getSex() + "#" + people.getProvince()));
统计
场景: 统计所有人员的存款总和
int型
复制代码
1
2int sum = peopleArrayList.stream().mapToInt(People::getMoney).sum();
long型
复制代码
1
2long sum = peopleArrayList.stream().mapToLong(People::getMoney).sum();
double型
复制代码
1
2double sum = peopleArrayList.stream().mapToDouble(People::getMoney).sum();
最后
以上就是开心斑马最近收集整理的关于java 8 lambda表达式常用方法及使用场景的全部内容,更多相关java内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复