不可变集合有以下好处:
- 使用安全,不必担心被篡改
- 线程安全
- 能够节约时间和空间
- 可以被作为常量使用
不可变集合类型和可变类型的对应关系
Interface | JDK or Guava? | Immutable Version |
---|---|---|
Collection | JDK | ImmutableCollection |
List | JDK | ImmutableList |
Set | JDK | ImmutableSet |
SortedSet /NavigableSet | JDK | ImmutableSortedSet |
Map | JDK | ImmutableMap |
SortedMap | JDK | ImmutableSortedMap |
Multiset | Guava | ImmutableMultiset |
SortedMultiset | Guava | ImmutableSortedMultiset |
Multimap | Guava | ImmutableMultimap |
ListMultimap | Guava | ImmutableListMultimap |
SetMultimap | Guava | ImmutableSetMultimap |
BiMap | Guava | ImmutableBiMap |
ClassToInstanceMap | Guava | ImmutableClassToInstanceMap |
Table | Guava |
Immutable collections(不可变集合)
guava为每种不可变类型提供三种方式
1. of方法
2. copyOf方法
3. builder方式
所有 Immutable collections都提供一个通过asList方法来获取一个ImmutableList视图
注意:所有的这些不可变集合都不支持null元素