2010-01-27 65 views
3

我想在Trove集合中放一些不可修改的包裝:我檢查過Trove文檔,我似乎找不到一個簡單的方法來做到這一點(我可能忽略了一些明顯的東西)。如何返回Java Trove集合的不可修改視圖?

所以到現在爲止,我需要我延長了Trove集合(例如TIntLongHashMap)和委託所有的這樣一個不可修改的包裝,每次只讀調用到特羅韋包裹主體和拋出UnsupportedOperationException異常每一種嘗試修改集合的方法。

是否有更簡單的方法?

注:這個問題是不是默認的Java集合,在這種情況下,我沒有興趣在所有既不在默認的Java集合,也沒有在其他Java集合:這個問題是特別爲約特羅韋。

回答

1

有沒有辦法與Trove API做到這一點,只與裝飾者。

3

當時接受的答案是正確的,但對於想要做同樣的事的人來說,Trove 3現在通過TCollections類支持這個。

E.g.

TIntLongMap myMap = new TIntLongHashMap(); 
TIntLongMap myUnmodifiableMap = TCollections.unmodifiableMap(myMap); 

myUnmodifiableMap.put(1, 2L); // throws UnsupportedOperationException