2010-01-27 52 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