首页 > 解决方案 > 在对象数组上流式传输并收集以将键作为属性和对象作为值进行映射

问题描述

我有一个对象 Entity[],它具有像 Fields (Key:value) 这样的属性,因此要获取 field1 值 entity.getField(field1)。

我想创建一个地图 <field1Value, Object>

在通过 Arrays.stream().collect 使用 Collector 时需要帮助,命令式方法如下:

Entity[] entityRecords; //array of Entity
Map<String, Entity> newMap = new HashMap<>(); 
for (Entity entityRecord : entityRecords) {
 newMap.put( entityRecord.getField(field), entityRecord);
 } 
return newMap;

标签: javajava-8java-stream

解决方案


这是答案。我假设字段是实体中的一些属性

private Map<String, Entity> entityToMap() {
    String field = "Somefield";
    Entity[] entityRecords; //array of Entity
    return Arrays.stream(entityRecords)
           .collect(Collectors.toMap(e -> e.getField(field), Function.identity()));
}

推荐阅读