-1

元の Map のサブビューにエントリを追加するときに、JVM は 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

「返されたソート済みマップを変更しようとしています...」

元の を含まない、呼び出しから返されUnsupportedOperationExceptionたのみをスローします。MapunmodifiableMap(...)Map

Mapから返されるは元のと同じでunmodifiableMap(...)はありませんMap

于 2013-02-28T00:54:08.990 に答える
1

Collections.unmodifiableMap()元のマップの変更不可能なビューを返します。元のマップは変更されません。これは、元のマップがまだ変更可能であることを意味します。変更できないビューを変更しようとした場合にのみ、例外が発生します。

于 2013-02-28T00:56:35.553 に答える