2011-10-08 22 views
2

我有番石榴多集,我想獲取給定元素的實例數不反覆在這個多集(我不想重複因爲我認爲迭代需要相當長的一段時間,因爲它查看了所有的集合)。獲得番石榴多集元素的實例的數量不反覆

爲了做到這一點,我想先用多集的entrySet的()方法,以獲得一組單實例及其相應的數量。然後,將該集合轉換爲散列表(其中鍵是我的集合中的元素,值是它們的實例數)。因爲那樣我就可以使用hashmap的方法直接從它的鍵中檢索一個值 - 完成!但是,只有當我可以快速地將集合轉換成散列表時,這纔有意義(不需要遍歷所有元素):是否有可能?

(正如我說我希望在多個計數是有缺陷的這個問題,我會很高興,如果你能在概念上的錯誤,闡明我可能在這裏做。THX!)

回答

4

你可能知道番石榴Multiset是一個接口,而不是一個類。

如果你只是想知道一個元素的重複號碼,撥打Multiset.count(Object element)

請忘記我的如下聲明:

然後,如果你使用的是流行的實現HashMultiset,已經有一個HashMap<E, AtomicInteger>場景下工作。 也就是說,當迭代HashMultiset時,HashMap也會迭代。不需要轉換成另一個HashMap。

+1

第一句話是紅鯡魚。 'Multiset' _interface_指定一個'count'方法(這是一個正確的方法)。不需要特別使用'HashMultiset.count'。 –

+1

@ ChrisJester-Young:是的,'HashMultiset.count'重寫'Multiset.count'。 –

+1

當然。但是這並沒有改變你應該只是明確地使用'Multiset'接口而不是'HashMultiset'的事實。 (即,'Multiset multiset = HashMultiset.create();',而不是'HashMultiset multiset = HashMultiset.create();'。)您仍然可以使用Multiset接口;只有工廠方法需要關心它是幕後的'HashMultiset'。 –