无法将元组列表转换为hashmap java

时间:2019-03-29 09:37:16

标签: java hashmap tuples

我想将javax.persistence.Tuple转换为HashMap,但是像这样,它插入元组的最后一个元素,并且还采用别名和数据类型。我该如何改进这种方法,使其采用元组的值?

public Map<String, Object> tuplesToMap(List<Tuple> data){
    Map<String, Object> values = new HashMap<>();
    data.forEach(tuple -> {
        tuple.getElements().forEach(
            element -> {
                values.put(element.getAlias(), tuple.get(element));
            }
        );
    });
    return values;
}

2 个答案:

答案 0 :(得分:0)

您用作哈希映射键的element.getAlias()对于某些元素可能是相同的。

Map键是唯一的,这意味着,如果先插入条目(1,“一个”),然后再插入(1,“两个”),则第一个值将被后者覆盖。如果要将多个值映射到一个键,请使用Map<String, Collection<Object>>或Guava中的Multimap,这是完全相同的事情。

您可以使用此功能插入多图-如果该键不在地图中,请创建一个新的ArrayList并将其添加到地图中,否则返回现有的。然后,将值插入列表:

values
    .computeIfAbsent(element.getAlias, k -> new ArrayList<>())
    .add(tuple.get(element));

答案 1 :(得分:0)

使用Java 8就是:

case UPDATE_PERSON_INFO: {
 return {
  ...state,
  firstName: payload.firstName  
 }
}