您可以通过遍历中的所有条目
mapAdded并将它们合并到中来实现此目的
mapGlobal。
下面
mapAdded通过调用
forEach(action)操作消耗每个条目的键和值的位置来遍历的条目。对于每个条目,我们叫
merge(key,value,remappingFunction)上
mapGlobal:这将要么创建键下的条目
k和值
v如果该键不存在,或者它会调用给定的重新映射功能,如果他们已经存在。此函数将2个列表合并,在这种情况下,首先将其添加到中
TreeSet以确保元素唯一和排序,然后将其转换回列表:
mapAdded.forEach((k, v) -> mapGlobal.merge(k, v, (v1, v2) -> { Set<String> set = new TreeSet<>(v1); set.addAll(v2); return new ArrayList<>(set);}));如果您想并行运行它,可以通过获取
entrySet()并调用
parallelStream()它来创建一个Stream管道。但随后,您需要确保使用支持并发的映射
mapGlobal,例如
ConcurrentHashMap。
ConcurrentMap<String, List<String>> mapGlobal = new ConcurrentHashMap<>();// ...mapAdded.entrySet().parallelStream().forEach(e -> mapGlobal.merge(e.getKey(), e.getValue(), (v1, v2) -> { Set<String> set = new TreeSet<>(v1); set.addAll(v2); return new ArrayList<>(set);}));


