如何使用Arrays.stream().collect将Entity数组转为以字段值为键的Map
实现方案
你可以直接用Collectors.toMap收集器完成转换,对应的流式写法如下:
import java.util.Arrays; import java.util.Map; import java.util.stream.Collectors; // 业务逻辑片段 Entity[] entityRecords; // 已初始化的Entity数组 String targetField = "field1"; // 作为Map键的目标字段名 Map<String, Entity> newMap = Arrays.stream(entityRecords) .collect(Collectors.toMap( entity -> entity.getField(targetField), // 定义Map的键生成规则 entity -> entity, // 定义Map的值生成规则,直接取Entity本身 (existVal, newVal) -> newVal // 重复键冲突处理:示例用新值覆盖旧值,可按需调整 )); return newMap;
注意事项
- 如果你不需要处理重复键,也可以省略第三个冲突处理参数,此时如果出现重复键会默认抛出
IllegalStateException异常 - 如果
getField返回的字段值类型不是String,只需要对应修改Map的key泛型即可
内容的提问来源于stack exchange,提问作者Ravi Shankar
相关产品推荐
相关产品推荐

