目录
java.util.Optional
| get | 获取Optional的value,为null则抛出NoSuchElementException异常 | public T get() |
| of | 将value封装为Optional对象,为null则抛出NullPointerException异常 | public static |
| empty | 返回空Optional对象 | public static |
| ofNullable | 将value封装为Optional对象,为null则将返回空对象 | public static |
| isPresent | 不为null返回true,否则返回false | public boolean isPresent() { return value != null; } |
| ifPresent | value不为null则使用该值调用指定的使用者 | public void ifPresent(Consumer super T> consumer) |
| orElse | 若对象的value不为null返回value,否则返回other | public T orElse(T other) |
| orElseGet | 若对象的value不为null返回value,否则返回other.get() | public T orElseGet(Supplier extends T> other) |
| orElseThrow | 若对象的value不为null返回value,否则supplier创建的异常 | public |
| filter | 如果值存在,返回条件筛选后的Optional对象,否则返回空对象 | public Optional |
| map | 如果值存在,就对该值执行提供的mapping函数调用 | public Optional map(Function super T, ? extends U> mapper) |
| flatMap | 如果值存在,就执行flatmap函数 |
- @Data
- @Builder
- @NoArgsConstructor
- @AllArgsConstructor
- public class User {
-
- private Long id;
- private String name;
- }
场景1:user对象不为空,获取id,为空需要返回0
- //之前
- Objects.isNull(user.getId()) ? 0L : user.getId();
- //替换
- Optional.ofNullable(user.getId()).orElse(0L);
场景2:如果user不为空,返回用户ID,为空需要返回0
- //之前
- if (Objects.nonNull(user)) {
- return user.getId();
- } else {
- return 0L;
- }
-
- //替换
- Optional.ofNullable(user).map(User::getId).orElse(0L);
场景3:如果user不为空,输出用户ID+用户name下划线隔开
- //之前
- if (Objects.nonNull(user)) {
- System.out.println(user.getId() + "_" + user.getName());
- }
-
- //替换
- Optional.ofNullable(user).ifPresent(user1 -> System.out.println(user1.getId() + "_" + user1.getName()));
场景4:找一个名叫张三的用户
- //之前
- List
filterUsers = list.stream().filter(user1 -> "张三".equals(user1.getName())).collect(Collectors.toList()); - if (CollectionUtils.isNotEmpty(filterUsers)) {
- User user = filterUsers.get(0);
- System.out.println(user.getId() + "_" + user.getName());
- }
-
- //替换
- Optional
filterUsers = list.stream().filter(user1 -> "张三".equals(user1.getName())).findAny(); - if (filterUsers.isPresent()) {
- User user = filterUsers.get();
- System.out.println(user.getId() + "_" + user.getName());
- }