Guava中定義的新集合有:
Multiset
SortedMultiset
Multimap
ListMultimap
SetMultimap
BiMap
ClassToInstanceMap
Table
Multiset集合
Multiset是什麼?顧名思義,Multiset和Set的差別就是可以儲存多個相同的對象。在JDK中,List和Set有一個基本的差別,就是List可以包含多個相同對象,且是有順序的,而Set不能有重複,且不保證順序(有些實作有順序,例如LinkedHashSet和SortedSet等)是以Multiset占據了List和Set之間的一個灰色地帶:允許重複,但是不保證順序。
使用場景:Multiset有一個有用的功能,就是跟蹤每種對象的數量,是以你可以用來進行數字統計。 常見的普通實作方式如下:
Multiset主要方法
Multiset接口定義的接口主要有:
add(E element) :向其中添加單個元素
add(E element,int occurrences) : 向其中添加指定個數的元素
count(Object element) : 傳回給定參數元素的個數
remove(E element) : 移除一個元素,其count值 會響應減少
remove(E element,int occurrences): 移除相應個數的元素
elementSet() : 将不同的元素放入一個Set中
entrySet(): 類似與Map.entrySet 傳回Set
說明:setCount(E element,int oldCount,int newCount): 方法,如果傳入的oldCount和element的不一緻的時候,是不能講element的count設定成newCount的。需要注意。
Multiset不是Map
需要注意的是Multiset不是一個Map