如何使用stream()将含Meta与嵌套Values列表的ArrayList转为关联元数据的平铺列表
实现方案
核心通过Stream的flatMap操作展开嵌套的Values列表,同时绑定每个Values对应的Meta元数据即可实现需求,代码如下:
import java.util.List; import java.util.stream.Collectors; // 你的其他类定义保持不变... List<MetaValue> metaValueList = response.stream() // 展开每个Response内部的Values列表 .flatMap(resp -> resp.getValues().stream() // 绑定当前Response关联的Meta与单个Values对象,构造目标MetaValue .map(val -> new MetaValue( resp.getMeta().getName(), val.getDate(), // 替换为你Values类中日期字段对应的getter方法 val.getScore() // 替换为你Values类中浮点数字段对应的getter方法 )) ) // JDK16+可直接使用.toList(),JDK8环境请替换为下面这行 // .collect(Collectors.toList()); .toList();
注意事项
- 需确保
Response、Meta、Values类的对应字段有公开的Getter方法,若字段为public权限可直接读取字段值替换上述Getter调用 - 代码中
getDate()、getScore()需替换为你实际Values类中对应字段的Getter方法名,和你定义的Values类字段命名保持一致即可正常运行
内容的提问来源于stack exchange,提问作者mars8
相关产品推荐
相关产品推荐

