串行和并行

串行

stream()

并行

parallelStream()

stream().parallel()

  • 对象中取字段
1
List<String> names = userEntities.stream().map(UserEntity::getName).collect(Collectors.toList());
  • reduce求和
1
2
3
4
5
6
7
8
9
10
11
12
13
14
List<Integer> list = Arrays.asList(1,2,3,4,5,6);
//串行
int all = list.stream().reduce(0,((tempTatal, tempParam) -> tempTatal + tempParam));
System.out.println(all);
all = list.stream().reduce(0,Integer::sum);
System.out.println(all);
//并行
all = list.stream().parallel().reduce(0,Integer::sum,Integer::sum);
System.out.println(all);

//串行
BigDecimal all = list.stream().reduce(BigDecimal.ZERO, BigDecimal::add);
//并行
BigDecimal all = list.stream().parallel().reduce(BigDecimal.ZERO, BigDecimal::add, BigDecimal::add);

Optional判空

  • 举例

    • 实体类User
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    @Data
    public class User {
    //用户名
    private String userName;
    //信息
    private String message;
    //爱好
    private Hobby hobby;
    }

    • 实体类Hobby
    1
    2
    3
    4
    5
    6
    7
    @Data
    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
    32
    public 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());

    }