You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java中如何用Lambda优雅打印Protobuf消息列表的foo_id字段

用Java Stream+Lambda实现优雅的ID列表打印

针对你的需求,用Java 8+的Stream API结合Lambda表达式可以写出更简洁高效的代码,同时规避原生循环中字符串拼接的性能问题:

import java.util.stream.Collectors;

// 核心实现代码
String idList = foos.stream()
                    // 提取每个foo对象的foo_id并转为字符串
                    .map(foo -> String.valueOf(foo.getFooId()))
                    // 将所有ID字符串直接拼接(如需分隔符,可在joining中传入,比如",")
                    .collect(Collectors.joining(""));

System.out.println("The list of ids are: " + idList);

写法优势说明

  • 简洁直观:用链式调用替代冗余的循环结构,代码意图一目了然
  • 性能更优:Collectors.joining()内部基于StringBuilder处理拼接,避免了原生循环中String +操作产生的大量中间字符串对象
  • 扩展性强:如果后续需要对ID做过滤、排序等操作,直接在Stream链中追加对应逻辑即可(比如.filter(foo -> foo.getCommitted())仅打印已提交的ID)

如果希望ID之间用分隔符(比如逗号+空格)分隔,只需修改joining的参数:

.collect(Collectors.joining(", "))

内容的提问来源于stack exchange,提问作者mahb

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 09:05:30