[Google Guava] 2.1-不可变集合
原文链接 译者:沈义扬
范例
[code lang=”java”]
public static final ImmutableSet<String> COLOR_NAMES = ImmutableSet.of(
        "red",
        "orange",
        "yellow",
        "green",
        "blue",
        "purple");
class Foo {
    Set<Bar> bars;
    Foo(Set<Bar> bars) {
        this.bars = ImmutableSet.copyOf(bars); // defensive copy!
    }
}
[/code]
为什么要使用不可变集合
不可变对象有很多优点,包括:
- 当对象被不可信的库调用时,不可变形式是安全的;
 - 不可变对象被多个线程调用时,不存在竞态条件问题
 - 不可变集合不需要考虑变化,因此可以节省时间和空间。所有不可变的集合都比它们的可变形式有更好的内存利用率(分析和测试细节);
 - 不可变对象因为有固定不变,可以作为常量来安全使用。
 
创建对象的不可变拷贝是一项很好的防御性编程技巧。Guava为所有JDK标准集合类型和Guava新集合类型都提供了简单易用的不可变版本。
 阅读全文

 (24 votes, average: 4.54 out of 5)
 (10 votes, average: 3.90 out of 5)
