当前位置: 首页 > 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

http://www.lryc.cn/news/571824.html

相关文章:

  • 爱普特APT32F1104C8T6单片机 高抗干扰+硬件加密双保障
  • 支持向量机(SVM)例题
  • VS Code自动删除末尾空行设置
  • 无需公网IP:Termux+手机+内网穿透实现Minecraft远程多人联机
  • Python从入门到精通
  • Python数据操作
  • Docker搭建RabbitMQ集群环境
  • 机器学习重构光子学设计范式:从智能器件到前沿系统
  • 【力扣每日一题】划分数组并满足最大差限制
  • iOS开发中的安全实践:如何通过Ipa混淆与加固确保应用安全
  • AI 技术落地实战:开发流程优化、行业场景重塑与前沿应用洞察
  • Evertz SVDN 3080ipx-10G Web管理接口任意命令注入及认证绕过漏洞(CVE-2025-4009)
  • Hive 逻辑优化器
  • 持续集成 CI/CD-Jenkins持续集成GitLab项目打包docker镜像推送k8s集群并部署至rancher
  • 京东618带火四大消费 即时零售和生活服务迎来爆发
  • 几种大功率远距传输WiFI解决方案
  • Spring Boot 常用注解整理
  • 支持selenium的chrome driver更新到137.0.7151.119
  • 面向智能制造场景的永磁同步电机预测控制系统设计
  • python大学校园旧物捐赠系统
  • 火山 RTC 引擎12----合流转推 集成
  • (LeetCode 每日一题) 2966. 划分数组并满足最大差限制 (贪心、排序)
  • [Python][Flask][Gunicorn] 搭建一个服务器-初步-小白式教程 - 1
  • 【系统分析师】第3章-基础知识:计算机系统(核心总结)
  • 如何在 MX Linux 上安装 Blender CAD 软件
  • 资源占用多,Linux 系统中如何降低 CPU 资源消耗并提升利用率?
  • 成组进位及其函数
  • 一篇文章快速学会HTML
  • 智能照明新篇章:电力载波技术的优势与未来展望​
  • 如何配置 SQL Server 混合身份验证模式​