-1

我正在尝试向不可修改的 Map 添加条目,JVM 在将条目添加到原始 Map 的子视图时捕获 UnsupportedOperationException,但 JVM 不关心直接添加到原始视图,代码说明:

ConcurrentMap<String, Integer> origView= new ConcurrentHashMap<String, Integer>();
                Map<String,Integer> subView = Collections.unmodifiableMap(origView);
                origView.put("s", 44); // ok
                subView.put("p", 77); // java.lang.UnsupportedOperationException

但是 Collections.unmodifiableSortedMap() 的文档说:

尝试修改返回的排序地图,无论是直接的、通过它的集合视图,还是通过它的 subMap、headMap 或 tailMap 视图,都会导致 UnsupportedOperationException。

请伸出援手,谢谢。

4

2 回答 2

4

“尝试修改返回的排序图......”

它只会在调用返回时抛出一个UnsupportedOperationExceptionMap包括unmodifiableMap(...)原始Map.

Map返回的unmodifiableMap(...)与原来的不同Map

于 2013-02-28T00:54:08.990 回答
1

Collections.unmodifiableMap()返回原始地图的不可修改视图;它不会以任何方式改变原始地图。这意味着原始地图仍然可以修改。如果您尝试修改不可修改的视图,您只会得到一个异常。

于 2013-02-28T00:56:35.553 回答