描述:
我的问题集之一提供了测试用例,以检查键入的代码是否正常工作。我不会详细介绍,但基本上这些测试都以 map 作为输入。我的代码适用于所有测试用例,除了一个:当我查看测试时,我看到输入映射被更改为不可修改的映射(Collections.unmodifyingMap(numbers)),并且这个不可修改的映射被传递给我编写的方法。这是唯一执行此操作的测试,所以我想知道是否可以复制此不可修改的映射,以便可以在我的方法中对其进行修改?我要做的最重要的修改是更新键的值 (map.put(key, map.get(key)-1)。
扩展名:
另一个问题,是否有类似的方法可以对列表或集合等其他数据结构执行此操作?
最佳答案
最简单的方法是创建新 map :
final Map<?, ?> unmodifiable = Collections.unmodifiableMap(new HashMap<>());
final Map<?, ?> modifiable = new HashMap<>(unmodifiable);
两个 map 引用相同值。
扩展
对于列表和集合等集合,其工作原理类似。它们通常具有可以将另一个集合传递给的构造函数。
关于java - 是否可以为不可修改的 map 制作可修改的副本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59034590/