当前位置: 首页 > news >正文

【java中使用stream处理list数据提取其中的某个字段,并由List<String>转为List<Long>】

你当前的代码是这样的:

List<String> gongkuangIds = gongkuangBoundList.stream().filter(obj -> obj.getBoundValue() != null).map(PlanSchemeProductionBoundInfo::getBoundValue).distinct().collect(Collectors.toList());

这段代码从 gongkuangBoundList 中提取出非空的 boundValue,然后去重,最终收集为一个 List。
✅ 你的需求是:将结果改为返回 List 类型,而不是 List。
这就意味着:
•getBoundValue() 返回的是 String 类型;
•你需要将它转换为 Long 类型;
•并最终生成一个 List。
✅ 解决方案:在 map 阶段加上类型转换你可以使用 parseLong() 或 valueOf() 方法进行转换。推荐使用 parseLong(),更直观。
✅ 修改后的代码如下:

List<Long> gongkuangIds = gongkuangBoundList.stream().filter(obj -> obj.getBoundValue() != null && !obj.getBoundValue().isEmpty()).map(obj -> Long.parseLong(obj.getBoundValue())) // 转换为 Long.distinct().collect(Collectors.toList());

✅ 注意事项

  1. 确保字符串可以转为数字如果你不确定 boundValue 是否一定是数字字符串,建议加异常处理或过滤非法数据:
.map(obj -> {try {return Long.parseLong(obj.getBoundValue());} catch (NumberFormatException e) {return null;}
})
.filter(Objects::nonNull)
  1. 避免空字符串导致错误上面的 .filter(obj -> obj.getBoundValue() != null && !obj.getBoundValue().isEmpty()) 可以防止 Long.parseLong() 报错。

✅ 完整示例(带安全处理)

List<Long> gongkuangIds = gongkuangBoundList.stream().map(obj -> obj.getBoundValue()).filter(Objects::nonNull).filter(value -> !value.isEmpty()).map(value -> {try {return Long.parseLong(value);} catch (NumberFormatException e) {// 可选:记录日志return null;}}).filter(Objects::nonNull).distinct().collect(Collectors.toList());

✅ 总结
步骤 说明
filter(obj -> obj.getBoundValue() != null) 过滤掉 null 值
filter(value -> !value.isEmpty()) 过滤掉空字符串
map(value -> Long.parseLong(value)) 字符串转 Long
.filter(Objects::nonNull) 排除转换失败的情况(可选)
.distinct() 去重
.collect(…) 收集为 List

相关文章:

  • DNS服务管理企业级实战模拟
  • Flask视频和图片上传
  • win11装vm虚拟机创建Linux常见问题!
  • 线上线下融合驱动:开源链动2+1模式与AI智能名片赋能高价值社群生态的机制研究
  • 常见的Dolphin Scheduler报错
  • Docker Compose部署Spring Cloud 微服务系统
  • 腾讯云搭建web服务器的方法
  • extern关键字:C/C++跨文件编程利器
  • FPGA基础 -- Verilog行为级建模之时序控制
  • 回溯----5.括号生成
  • 如何通过 5 种方式向 Android 手机添加音乐
  • ubuntu下python版本升级导致pyqt不能正常运行解决
  • MSYS2 环境下 Python 开发配置(结合 PyCharm)使用笔记
  • RNN为什么不适合大语言模型
  • html中的table标签以及相关标签
  • ESLint从入门到实战
  • 智净未来:华为智选IAM以科技巧思优化家庭健康饮水体验
  • 2025年中总结
  • Java安全-常规漏洞问题(SQL注入,XXE,SSRF,RCE)
  • Linux系统网络服务之DCHP服务
  • 做阿里巴巴英文网站/百度指数查询官网大数据
  • 企点app下载/网站seo策划
  • 网站优化怎么样做/百度手机版网址
  • 建设公司网站多少钱/2024小学生时事新闻十条
  • 网站推广的好处/2024年新闻摘抄十条
  • 乌海网站制作/cps推广平台