如何返回Java Trove集合的不可修改的视图?

时间:2010-01-27 14:03:47

标签: java collections trove4j

我想在一些Trove系列中放置不可修改的包装器:我已经检查了Trove文档,我似乎找不到一个简单的方法(我可能忽略了一些明显的东西)。

到目前为止,每当我需要这样一个不可修改的包装器时,我会扩展Trove集合(例如 TIntLongHashMap )并将所有只读调用委托给Trove包装主题并抛出一个尝试修改集合的每个方法中都有 UnsupportedOperationException

有更简单的方法吗?

注意:这个问题不是关于默认的Java集合,在这种情况下,我对默认Java集合和其他Java集合都不感兴趣:这个问题具体是关于Trove。

2 个答案:

答案 0 :(得分:3)

当时接受的答案是正确的,但对于任何想要这样做的人来说,Trove 3现在通过TCollections类支持这一点。

E.g。

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

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

答案 1 :(得分:1)

使用Trove API无法实现此功能,只能使用装饰器。