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));

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

相关文章
|
21天前
|
存储 安全 Java
Java 集合框架中的老炮与新秀:HashTable 和 HashMap 谁更胜一筹?
嗨,大家好,我是技术伙伴小米。今天通过讲故事的方式,详细介绍 Java 中 HashMap 和 HashTable 的区别。从版本、线程安全、null 值支持、性能及迭代器行为等方面对比,帮助你轻松应对面试中的经典问题。HashMap 更高效灵活,适合单线程或需手动处理线程安全的场景;HashTable 较古老,线程安全但性能不佳。现代项目推荐使用 ConcurrentHashMap。关注我的公众号“软件求生”,获取更多技术干货!
39 3
|
2月前
|
SQL Java 索引
java小工具util系列2:字符串工具
java小工具util系列2:字符串工具
157 83
|
13天前
|
Java
java代码优化:判断内聚到实体对象中和构造上下文对象传递参数
通过两个常见的java后端实例场景探讨代码优化,代码不是优化出来的,而是设计出来的,我们永远不可能有专门的时间去做代码优化,优化和设计在平时
29 15
|
27天前
|
移动开发 前端开发 Java
Java最新图形化界面开发技术——JavaFx教程(含UI控件用法介绍、属性绑定、事件监听、FXML)
JavaFX是Java的下一代图形用户界面工具包。JavaFX是一组图形和媒体API,我们可以用它们来创建和部署富客户端应用程序。 JavaFX允许开发人员快速构建丰富的跨平台应用程序,允许开发人员在单个编程接口中组合图形,动画和UI控件。本文详细介绍了JavaFx的常见用法,相信读完本教程你一定有所收获!
Java最新图形化界面开发技术——JavaFx教程(含UI控件用法介绍、属性绑定、事件监听、FXML)
|
2月前
|
Java 数据库
java小工具util系列1:日期和字符串转换工具
java小工具util系列1:日期和字符串转换工具
67 26
|
1月前
|
存储 缓存 安全
Java 集合江湖:底层数据结构的大揭秘!
小米是一位热爱技术分享的程序员,本文详细解析了Java面试中常见的List、Set、Map的区别。不仅介绍了它们的基本特性和实现类,还深入探讨了各自的使用场景和面试技巧,帮助读者更好地理解和应对相关问题。
49 5
|
1月前
|
JSON 前端开发 JavaScript
Java属性为什么不能是is开头的boolean
在Java实体类中,阿里规约要求boolean属性不应以is开头。文章通过实际案例分析了isUpdate字段在JSON序列化过程中变为update的问题,并提供了自定义get方法或使用@JSONField注解两种解决方案,建议遵循规约避免此类问题。
Java属性为什么不能是is开头的boolean
|
2月前
|
存储 缓存 安全
Java 集合框架优化:从基础到高级应用
《Java集合框架优化:从基础到高级应用》深入解析Java集合框架的核心原理与优化技巧,涵盖列表、集合、映射等常用数据结构,结合实际案例,指导开发者高效使用和优化Java集合。
56 4
|
2月前
|
存储 缓存 安全
java 中操作字符串都有哪些类,它们之间有什么区别
Java中操作字符串的类主要有String、StringBuilder和StringBuffer。String是不可变的,每次操作都会生成新对象;StringBuilder和StringBuffer都是可变的,但StringBuilder是非线程安全的,而StringBuffer是线程安全的,因此性能略低。
76 8
|
2月前
|
缓存 算法 Java
本文聚焦于Java内存管理与调优,介绍Java内存模型、内存泄漏检测与预防、高效字符串拼接、数据结构优化及垃圾回收机制
在现代软件开发中,性能优化至关重要。本文聚焦于Java内存管理与调优,介绍Java内存模型、内存泄漏检测与预防、高效字符串拼接、数据结构优化及垃圾回收机制。通过调整垃圾回收器参数、优化堆大小与布局、使用对象池和缓存技术,开发者可显著提升应用性能和稳定性。
62 6