JDK8特性
串行和并行
串行
stream()
并行
parallelStream()
stream().parallel()
- 对象中取字段
1 | List<String> names = userEntities.stream().map(UserEntity::getName).collect(Collectors.toList()); |
- reduce求和
1 | List<Integer> list = Arrays.asList(1,2,3,4,5,6); |
Optional判空
举例
- 实体类User
1
2
3
4
5
6
7
8
9
10
public class User {
//用户名
private String userName;
//信息
private String message;
//爱好
private Hobby hobby;
}- 实体类Hobby
1
2
3
4
5
6
7
public class Hobby {
//爱好名
private String hobbyName;
//描述
private String hobbydesc;
}- 模拟使用
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
32public static void main(String[] args) throws MyException {
//简单的一层结构(效果不明显,用ifPresent 和 ==null区别不大)
User user = null;
Optional.ofNullable(user).ifPresent( //判断是否为空
user1 -> {
System.out.println(user1.getUserName());
System.out.println(user.getMessage());
}
);
//抛出异常
Optional.ofNullable(user).map(User::getMessage).orElseThrow(() -> new MyException("这是抛出我的自定义异常"));
//不抛出异常直接给默认值
String message = Optional.ofNullable(user).map(User::getMessage).orElse("");
System.out.println("这是我给的值"+message);
//多层结构(多层的时候可以多个map.然后通过ifPresent可以直接判断空,比不断地判断 ==null 简洁方便)
Optional.ofNullable(user).map(User::getHobby).ifPresent(
hobby -> {
System.out.println("这里执行获取到hobby的事");
}
);
//抛出异常
Optional.ofNullable(user).map(User::getHobby).map(Hobby::getHobbyName).orElseThrow(() -> new MyException("这是抛出我的自定义异常"));
//直接给默认值
String hobbyName = Optional.ofNullable(user).map(User::getHobby).map(Hobby::getHobbyName).orElse("");
System.out.println("获取Hobby中默认给的值为"+hobbyName);
//给对象中的对象默认对象
Hobby hobby = Optional.ofNullable(user).map(User::getHobby).orElse(new Hobby());
System.out.println("获取Hobby中的值不报异常为"+hobby.getHobbyName());
}
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 SimpleMw's Blog!