java8中过滤、获取指定属性转换为集合、字符串拼接、移除某个对象的使用

简介: java8中过滤、获取指定属性转换为集合、字符串拼接、移除某个对象的使用
@Override
    public List<TaskApproveVo> taskApprove(TaskApproveDTO taskApproveDTO) {
        List<TaskApproveVo> voList = approveLogMapper.getTaskApprove(taskApproveDTO);
        // 将名称与部门名称拼接
        voList.forEach(taskApproveVo -> {
            String userName = taskApproveVo.getUserName();
            String orgName = taskApproveVo.getOrgName();
            taskApproveVo.setUserNameAndOrgName(userName + "-" + orgName);
        });
        // 如果当前节点有多个代办的话  将同一级别的代办展示为一条 并将名字拼接
        List<TaskApproveVo> list = voList.stream().filter(a -> a.getStatus() == 0).collect(Collectors.toList()); // 过滤 获取同一节点所有代办
        if (list.size() > 1){
            List<String> newList = list.stream().map(TaskApproveVo::getUserNameAndOrgName).collect(Collectors.toList()); // 获取指定属性转换为集合 获取所有的userNameAndOrgName 转化为集合
            String names = newList.stream().collect(Collectors.joining(",")); // 逗号拼接字符串
            // 将原始集合中的代办剔除 创建一个新的代办对象
            voList.removeIf(vo -> vo.getStatus() == 0);
            TaskApproveVo taskApproveVo = new TaskApproveVo();
            taskApproveVo.setStatus(0);
            taskApproveVo.setBillId(voList.get(0).getBillId());
            taskApproveVo.setInstanceId(voList.get(0).getInstanceId());
            taskApproveVo.setUserNameAndOrgName(names);
            voList.add(taskApproveVo);
        }
        return voList;
    }

过滤

List<TaskApproveVo> list = voList.stream().filter(a -> a.getStatus() == 0).collect(Collectors.toList());

获取指定属性转换为集合

List<String> newList = list.stream().map(TaskApproveVo::getUserNameAndOrgName).collect(Collectors.toList());

逗号拼接字符串

String names = newList.stream().collect(Collectors.joining(","));

根据条件移除集合中的某个对象

voList.removeIf(vo -> vo.getStatus() == 0);

通过某个字段对集合中的数据进行去重

List<WorkflowCirculation> circulationList = workflowCirculationMapper.queryListByPressesKeyAndBindVersion("Process_1646718515566", "version1");
List<WorkflowCirculation> list = circulationList.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(() ->
       new TreeSet<>(Comparator.comparing(WorkflowCirculation::getName))
), ArrayList::new));

文章持续更新,可以关注下方公众号或者微信搜一搜「 最后一支迷迭香 」第一时间阅读,获取更完整的链路资料。

相关文章
|
23天前
|
存储 安全 Java
Java零基础-字符串详解
【10月更文挑战第18天】Java零基础教学篇,手把手实践教学!
97 60
|
22天前
|
安全 Java 编译器
Java对象一定分配在堆上吗?
本文探讨了Java对象的内存分配问题,重点介绍了JVM的逃逸分析技术及其优化策略。逃逸分析能判断对象是否会在作用域外被访问,从而决定对象是否需要分配到堆上。文章详细讲解了栈上分配、标量替换和同步消除三种优化策略,并通过示例代码说明了这些技术的应用场景。
Java对象一定分配在堆上吗?
|
13天前
|
缓存 算法 Java
本文聚焦于Java内存管理与调优,介绍Java内存模型、内存泄漏检测与预防、高效字符串拼接、数据结构优化及垃圾回收机制
在现代软件开发中,性能优化至关重要。本文聚焦于Java内存管理与调优,介绍Java内存模型、内存泄漏检测与预防、高效字符串拼接、数据结构优化及垃圾回收机制。通过调整垃圾回收器参数、优化堆大小与布局、使用对象池和缓存技术,开发者可显著提升应用性能和稳定性。
35 6
|
11天前
|
Java
Java 8 引入的 Streams 功能强大,提供了一种简洁高效的处理数据集合的方式
Java 8 引入的 Streams 功能强大,提供了一种简洁高效的处理数据集合的方式。本文介绍了 Streams 的基本概念和使用方法,包括创建 Streams、中间操作和终端操作,并通过多个案例详细解析了过滤、映射、归并、排序、分组和并行处理等操作,帮助读者更好地理解和掌握这一重要特性。
21 2
|
10天前
|
安全 Java
Java多线程集合类
本文介绍了Java中线程安全的问题及解决方案。通过示例代码展示了使用`CopyOnWriteArrayList`、`CopyOnWriteArraySet`和`ConcurrentHashMap`来解决多线程环境下集合操作的线程安全问题。这些类通过不同的机制确保了线程安全,提高了并发性能。
|
15天前
|
存储 Java
判断一个元素是否在 Java 中的 Set 集合中
【10月更文挑战第30天】使用`contains()`方法可以方便快捷地判断一个元素是否在Java中的`Set`集合中,但对于自定义对象,需要注意重写`equals()`方法以确保正确的判断结果,同时根据具体的性能需求选择合适的`Set`实现类。
|
25天前
|
Java API
Java 对象释放与 finalize 方法
关于 Java 对象释放的疑惑解答,以及 finalize 方法的相关知识。
45 17
|
15天前
|
存储 Java 开发者
在 Java 中,如何遍历一个 Set 集合?
【10月更文挑战第30天】开发者可以根据具体的需求和代码风格选择合适的遍历方式。增强for循环简洁直观,适用于大多数简单的遍历场景;迭代器则更加灵活,可在遍历过程中进行更多复杂的操作;而Lambda表达式和`forEach`方法则提供了一种更简洁的函数式编程风格的遍历方式。
|
15天前
|
Java 开发者
|
25天前
|
存储 安全 Java
Java编程中的对象序列化与反序列化
【10月更文挑战第22天】在Java的世界里,对象序列化和反序列化是数据持久化和网络传输的关键技术。本文将带你了解如何在Java中实现对象的序列化与反序列化,并探讨其背后的原理。通过实际代码示例,我们将一步步展示如何将复杂数据结构转换为字节流,以及如何将这些字节流还原为Java对象。文章还将讨论在使用序列化时应注意的安全性问题,以确保你的应用程序既高效又安全。
下一篇
无影云桌面