jdk1.8 Lambda 使用集合内元素指定属性 拼接字符串

本文介绍了如何利用JDK1.8的Lambda表达式和Stream API,简洁地处理一对多关系中,将多端对象的指定属性拼接成字符串。在处理过程中,还特别提到当属性为null时的空指针问题及其解决方案,通过在过滤操作中排除属性为null的元素。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

JAVA jdk1.8 Lambda 获取集合中元素的某个属性 指定 分隔符 拼接字符串

依赖JDK1.8 Lambda

我们在开发过程中经常遇到 一对多的关系,而有时候展示时需要将多的一端的某个属性拼接为一个字符串进行处理。以前的处理方式就是for循环 判断 首位 或 末尾 拼接分隔符,感觉代码不够简练。

使用Lambda表达式

List<TopicBasicVo> topicBasicVos = iMetadataTopicRefService.getTopicsByCollectId(id);
List<String> topicPaths = topicBasicVos.stream().map(TopicBasicVo::getPath).collect(Collectors.toList());
String topicPathsStr = String.join(";", topicPaths);
metadataSimpleVo.setTopicPath(topicPathsStr);
metadataSimpleVo.setTopicBasicVos(topicBasicVos);

效果:

效果

当然返回类型为 List<Map<String,Object>>也能处理

List<Map<String, Object>> maps = jdbcTemplate.queryForList(sql);
List<String> paths = maps.stream().map(item -> item.get("path").toString()).collect(Collectors.toList());
String topicPathsStr = String.join(";", paths);

上边的处理方式当指定的属性为null时会空指针,处理一下

在容器遍历之前加入过滤 .filter(topic-> topic.getPath()!=null)

List<TopicBasicVo> topicBasicVos = iMetadataTopicRefInfoService.getTopicInfoByMetaCollectId(id);
List<String> topicPaths = topicBasicVos.stream().filter(topic-> topic.getPath()!=null).map(TopicBasicVo::getPath).collect(Collectors.toList());
String topicPathsStr = String.join(";", topicPaths);
metadataBasicSimpleVo.setTopicPath(topicPathsStr);
metadataCollectInfoVo.setTopicBasicVos(topicBasicVos);
//List<Map<String,Object>> 返回类型 依样处理
List<Map<String, Object>> maps = jdbcTemplate.queryForList(sql);
List<String> paths = maps.stream().filter(item -> item.get("path")!=null).map(item -> item.get("path").toString()).collect(Collectors.toList());
String topicPathsStr = String.join(";", paths);
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值