google guava集合之Multiset
Multiset是什麼?
Multiset看似是一個Set,但是實質上它不是一個Set,它沒有繼承Set介面,它繼承的是Collection
它本質上是一個Set加一個元素計數器。
Multiset使用示例:
package cn.outofmemory.guava.collection; import com.google.common.base.Splitter; import com.google.common.collect.HashMultiset; import com.google.common.collect.Multiset; public class MultisetDemo { public static void main(String[] args) { Multiset multiset = HashMultiset.create(); String sentences = "this is a story, there is a good girl in the story."; Iterablewords = Splitter.onPattern("[^a-z]{1,}").omitEmptyStrings().trimResults().split(sentences); for (String word : words) { multiset.add(word); } for (Object element : multiset.elementSet()) { System.out.println((String)element + ":" + multiset.count(element)); } } }
在上面的示例中我們對一段文字拆分成一個一個的單詞,然後依次放入到multiset中,注意這段文字中有多個重複的單詞,然後我們透過for迴圈遍歷multiset中的每一個元素,並輸出他們的計數。輸出內容如下:
story:2 is:2 girl:1 there:1 a:2 good:1 the:1 in:1 this:1
顯然計數不是問題,Multiset還提供了add和remove的過載方法,可以在add或這remove的同時指定計數的值。
常用實現 Multiset 介面的類有:
HashMultiset: 元素存放於 HashMap
LinkedHashMultiset: 元素存放於 LinkedHashMap,即元素的排列順序由第一次放入的順序決定
TreeMultiset:
元素被排序存放於
TreeMapEnumMultiset: 元素必須是 enum 型別
ImmutableMultiset: 不可修改的 Mutiset
看到這裡你可能已經發現 Guava Collections 都是以 create 或是 of 這樣的靜態方法來構造物件。這是因為這些集合類大多有多個引數的私有構造方法,由於引數數目很多,客戶程式碼程式設計師使用起來就很不方便。而且以這種方式可以返回原型別的子型別物件。另外,對於建立範型物件來講,這種方式更加簡潔。
原文連結:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/1916/viewspace-2805663/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- [Guava] Google Guava 集合工具類GuavaGo
- Google guava原始碼之EventBusGoGuava原始碼
- Guava集合--新集合型別Guava型別
- Guava集合--Immutable(不可變)集合Guava
- Google Guava Stopwatch(計時器)GoGuava
- google guava的BiMap:雙向MapGoGuava
- Google Guava官方教程(中文版)GoGuava
- google Guava包RateLimiter使用最佳實踐GoGuavaMIT
- google guava中定義的String操作GoGuava
- 使用Google Guava快樂程式設計GoGuava程式設計
- Java原始碼分析:Guava之不可變集合ImmutableMap的原始碼分析Java原始碼Guava
- 使用Java和Google Guava簡化開發JavaGoGuava
- Google guava工具類的介紹和使用GoGuava
- ☕【Java技術指南】「Guava Collections」實戰使用相關Guava不一般的集合框架JavaGuava框架
- 重試利器之Guava RetryingGuava
- Java記憶體快取-通過Google Guava建立快取Java記憶體快取GoGuava
- Google Guava 在實際場景中的應用封裝GoGuava封裝
- STL使用篇__multiset
- 重試利器之Guava-RetryerGuava
- CF1400E - Clear the Multiset
- [ABC221H] Count Multiset
- 限流原理解讀之guava中的RateLimiterGuavaMIT
- guava之ImmutableMap使用例項及好處Guava
- Guava 原始碼分析之 EventBus 原始碼分析Guava原始碼
- Guava futureGuava
- Guava CacheGuava
- Java集合之HashMapJavaHashMap
- Java 集合之ArrayListJava
- Java集合之LinkedHashMapJavaHashMap
- Java 集合之LinkedListJava
- java集合之CopyOnWriteArrayListJava
- Java集合之ArrayListJava
- Java之Properties集合Java
- CF1913C Game with Multiset 題解GAM
- Guava RateLimiter限流GuavaMIT
- UVA 11020 Efficient Solutions+multiset的應用
- 初識Kotlin之集合Kotlin
- Java集合系列之---HashMapJavaHashMap