我遇到了一個有趣的問題,我很想得到一些輸入。存儲整數集來檢查是否已經提到某個集合
我有一個程序,生成一組數字(基於一些預定義的條件)。每個集合最多包含6個數字,不必使用1到100之間的整數來唯一)。
我想以某種方式存儲每個創建的集合,以便我可以快速檢查某個集合是否具有完全相同的數字(順序無關緊要)先前已生成。
速度在這種情況下是一個優先事項,因爲在程序停止之前可能會存儲高達100k個集(可能更多,但大部分時間可能更少)!有人會對我應該使用什麼數據結構以及我應該如何處理這個問題有任何建議嗎?
什麼我現在是這樣的:
排序每組將其存儲到字符串的一個HashSet之前。該字符串簡單地說是每個有序分隔符集合中的數字。
例如,集合{4,23,67,67,71}將被編碼爲字符串「4-23-67-67-71」並存儲到HashSet中。然後對每個新生成的集合進行排序,編碼並檢查它是否存在於HashSet中。
謝謝!
如果你有記憶,HashSet是一個不錯的選擇。 – Starkey 2012-07-14 14:27:40
它可以包含重複項時不是一個集合。稱它爲multiset或包。 – 2012-07-14 14:48:51
謝謝菲利普,我不確定它的正確術語是什麼。 – Mick 2012-07-14 14:54:43