Set<String> l = locMap.keySet();
for (Map.Entry<String, String> ven : venderAndFactoryLocMap.entrySet()) {
if (ven.getValue().equals(VENDOR)) {
Map<String, String> x1 = l.stream().collect(Collectors.toMap(x -> x + "-" + ven.getKey(), x -> PROCESS));
locMap.putAll(x1);
}
}
在上面,locMap的值不断变化,而且L(即哈希集)的值也在变化,我认为一旦我们分配了一个变量,它的值在堆栈中就不会改变,为什么这是正在发生吗?
我期望 Set 保持不变,而我们正在更改 locMap
由于实施了
keySet()
,因此有所更改。它始终返回地图的实际键集。
要保持该值不变,需要根据locMap的keyset创建一个新的集合:
Set<String> l = new HashSet<>(locMap.keySet());