是否可以制作不可修改地图的可修改副本?

Zac*_*ary 2 java data-structures

描述:

我的问题集之一提供了测试用例来检查输入的代码是否正常工作。我不会详细介绍,但基本上这些测试以地图作为输入。我的代码适用于所有测试用例,除了一个:当我查看测试时,我看到输入映射被更改为不可修改的映射(Collections.unmodifiableMap(numbers))并且这个不可修改的映射被传递到我写的方法。这是唯一一个这样做的测试,所以我想知道是否可以制作这个不可修改的地图的副本,以便可以在我的方法中修改它?我必须进行的最重要的修改是更新键的值(map.put(key, map.get(key)-1)。

延期:

另一个问题,是否有类似的方法可以为其他数据结构(例如列表或集合)执行此操作?

Mar*_*eng 10

最简单的方法是创建一个新地图:

final Map<?, ?> unmodifiable = Collections.unmodifiableMap(new HashMap<>());
final Map<?, ?> modifiable = new HashMap<>(unmodifiable);
Run Code Online (Sandbox Code Playgroud)

两个映射引用相同的值。

延期

对于列表和集合之类的集合,它的工作原理类似。他们通常有构造函数,你可以将另一个集合传递给它。