读书人

Google Guava聚合4:创建方法和只读特

发布时间: 2012-11-05 09:35:12 作者: rapoo

Google Guava集合4:创建方法和只读特性
Google guava 集合的创建特性和只读特性

现在,让我们一起看看guava集合的创建模式,再看看guava提供的一些只读的集合类型。

如果你还不了解guava集合,那么可以参考我之前写的文档:

Guava集合1:MultiMap
http://vipcowrie.iteye.com/blog/1517338
Guava集合2:BiMap
http://vipcowrie.iteye.com/blog/1521092
Guava集合3:MultiSet
http://vipcowrie.iteye.com/blog/1517196

创建方法:
所有的Guava的集合实现都包含一些静态的创建方法,这些方法执行你期望的操作,并且也提供一些更加准确的创建方法。

这里演示两种创建ArrayListMultimap的方法:

// use copyOf()...public void doStuffWithList(List<Object> unsafeList) {List<Object> safeList = ImmutableList.copyOf(unsafeList);}// use a builder...public Map<String,Integer> makeImmutableMap() {ImmutableMap.Builder<String,Integer> mapBuilder = new ImmutableMap.Builder<String,Integer>();Entry<String,Integer> entry = null;while((entry = getEntry()) != null) {mapBuilder.put(entry.getKey(), entry.getValue());}return builder.build();}


还有很多方法。这个只读的集合在多线程的环境中很有用,因为这样就不用考虑使用同步机制来保证集合的完整性了。

但是只读的集合也有劣势,包括:
1)只读:只读本身就是一个劣势,如果你希望后面再修改的话,只能再创建一个集合的拷贝了
2)仍然可能被修改:集合的对象虽然不能被增删,但是对象本身如果有的属性可以修改,那么对象也可以直接被引用者修改,所以,你如果真的要一个只读集合的话,那么请你确保里面的对象也是只读的。

读书人网 >编程

热点推荐