天天看點

Java-類庫-Guava-Multiset

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