Java8 常用方法笔记

Java8 常用方法笔记

Stream使用

提取类的List的某个字段转化为字符串List

List<String> nameList = demoList.stream().map(Demo::getName).collect(Collectors.toList());

List转化为map

// (key1, key2) -> key2 表示如果Map的key重复了,那么value置为新值
Map<String, Demo> demoMap = demoList.stream().collect(
                Collectors.toMap(Demo::getName, (p) -> p, (key1, key2) -> key2));

List根据规则分组

// 根据name的简单分组
Map<String, List<Demo>> demoListMap = demoList.stream().collect(
                Collectors.groupingBy(Demo::getName, HashMap::new, Collectors.toList()));

// 同理可根据修改分组key的获取,进行更复杂的分组
Map<String, List<Demo>> demoNameIdMap = demoList.stream().collect(
                Collectors.groupingBy(demo -> {
                    StringBuilder stringBuilder = new StringBuilder();
                    stringBuilder.append(demo.getDemoId());
                    if (demo.isActive()) {
                        stringBuilder.append(demo.getName());
                    }
                    return stringBuilder.toString();
                }, HashMap::new, Collectors.toList()));

List过滤成员

// 同理可以将Demo::isActive 换成更加复杂的判断
List<Demo> activeDemoList = demoList.stream().filter(Demo::isActive).collect(Collectors.toList());

CompletableFuture异步处理

无返回值的异步处理

public Map<String, Object> test(String taskId, String employeeCode, Long docId) {
    Map<String, Object> workflowInfo = new HashMap<>(4);
    CompletableFuture<Void> taskDetailInfo = CompletableFuture
            .runAsync(() -> weChatWorkflowService.getTaskDetail(workflowInfo, taskId, employeeCode));
    CompletableFuture<Void> borrowInfo = CompletableFuture
            .runAsync(() -> this.getBorrowInfo(workflowInfo, docId));

    try {
        borrowInfo.get();
        taskDetailInfo.get();
    } catch (Exception e) {
        e.printStackTrace();
    }

    // return会阻塞到taskDetailInfo 和 borrowInfo都处理完才会返回结果
    return workflowInfo;
}
发布了19 篇原创文章 · 获赞 2 · 访问量 2451

猜你喜欢

转载自blog.csdn.net/Azhuzhu_chaste/article/details/103767303