我想将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;
}
答案 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
}
}