描述:

我的问题集之一是测试用例,用于检查键入的代码是否正常工作。我不会详细介绍,但是基本上这些测试将地图作为输入。我的代码对所有测试用例都非常有效,除了以下一种情况:当我看一下测试时,我发现输入映射被更改为不可修改的映射(Collections.unmodifiableMap(numbers)),并且该不可修改的映射传递给了我写的方法。这是唯一的测试,因此我想知道是否可以复制此不可修改的地图,以便可以在我的方法中对其进行修改?我必须做的最重要的修改是更新键的值(map.put(key,map.get(key)-1)。

延期:

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

最佳答案

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

final Map<?, ?> unmodifiable = Collections.unmodifiableMap(new HashMap<>());
final Map<?, ?> modifiable = new HashMap<>(unmodifiable);


两个映射都引用相同的值。

延期

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

10-07 18:57
查看更多