【发布时间】:2018-11-22 07:27:26
【问题描述】:
考虑一段代码:
imnport reactor.util.context.Context
public Context addAll (Context ctx, Map.Entry<String, Object> hashMap) {
Context ctxVar = ctx;
for (Map.Entry<String, Object> e : hashMap.entrySet()) {
if (e.getValue() != null) {
ctxVar = ctxVar.put(e.getKey(), e.getValue());
}
}
return ctxVar;
}
reactor.util.context.Context 是不可变类。所以put 将旧上下文与新附加值合并并返回 new
上下文。
问题是 - 是否有更紧凑的方法可以使用 java 8 流将 HashMap “组合”成不可变对象? (不适用于 Context 类)
注意:我已经阅读了有关 java 流收集的信息,但它似乎不起作用,因为我必须提供初始 Context
并在 map 之后组合几个上下文,但我认为为组合操作重新创建整个上下文太多了。
【问题讨论】:
-
不应该
Map.Entry<String, Object> hashMap是Map<String, Object> hashMap吗?您使用该变量,就好像它是Map。
标签: java java-8 java-stream