0%

Guava | collections 前导

这里简单的介绍一下 Guavacollections


分类


Guava 中主要分为两个类

  • 不可变集合
  • 可变集合

每一个集合都有对应的工具类。

集合接口 属于JDK还是Guava 对应的Guava工具类 不可变版本
Collection JDK Collections2:不要和 java.util.Collections 混淆 ImmutableCollection
List JDK Lists ImmutableList
Set JDK Sets ImmutableSet
SortedSet/NavigableSet JDK Sets ImmutableSortedSet
Map JDK Maps ImmutableMap
SortedMap JDK Maps ImmutableSortedMap
Queue JDK Queues
Multiset Guava Multisets ImmutableMultiset
SortedMultiset Guava ImmutableSortedMultiset
Multimap Guava Multimaps ImmutableMultimap
ListMultimap Guava ImmutableListMultimap
SetMultimap Guava ImmutableSetMultimap
BiMap Guava Maps ImmutableBiMap
ClassToInstanceMap Guava ImmutableClassToInstanceMap
Table Guava Tables ImmutableTable

不可变集合


创建方式

不可变集合创建方式

  • copyOf方法,如ImmutableSet.copyOf(set);
  • of方法,如ImmutableSet.of(“a”, “b”, “c”)ImmutableMap.of(“a”, 1, “b”, 2);
  • Builder工具,如
1
2
3
4
5
public static final ImmutableSet<Color> GOOGLE_COLORS =
ImmutableSet.<Color>builder()
.addAll(WEBSAFE_COLORS)
.add(new Color(0, 191, 255))
.build();

此外,对有序不可变集合来说,排序是在构造集合的时候完成的,如:

1
ImmutableSortedSet.of("a", "b", "c", "a", "d", "b");

会在构造时就把元素排序为a, b, c, d

工具类创建方式

  • Guava提供了能够推断范型的静态工厂方法:
1
2
List<TypeThatsTooLongForItsOwnGood> list = Lists.newArrayList();
Map<KeyType, LongishValueType> map = Maps.newLinkedHashMap();
  • 用工厂方法模式,我们可以方便地在初始化时就指定起始元素。
1
2
Set<Type> copySet = Sets.newHashSet(elements);
List<String> theseElements = Lists.newArrayList("alpha", "beta", "gamma");
  • Guava引入的新集合类型没有暴露原始构造器,也没有在工具类中提供初始化方法。而是直接在集合类中提供了静态工厂方法。
1
Multiset<String> multiset = HashMultiset.create();
请我喝杯咖啡吧~