我正在使用Java,我正在尋找在空間中優化並且速度很快的字符串集合(集合和列表)。我的字符串是固定的大小:3或5個字符長。Java中的快速字符串集合
如果有任何可以最適合我的收集庫,請告訴我。我正在考慮一些基於字典的集合。
謝謝。
我正在使用Java,我正在尋找在空間中優化並且速度很快的字符串集合(集合和列表)。我的字符串是固定的大小:3或5個字符長。Java中的快速字符串集合
如果有任何可以最適合我的收集庫,請告訴我。我正在考慮一些基於字典的集合。
謝謝。
假設你在談論C或C++,因爲我無法想象任何其他語言,有人會尋找一個字符串庫,我建議使用 Paul Hsieh。
儘管我自己從來沒有用過它,因爲它在我的情況下不起作用,但我在2007年將其作爲基礎的概念適用於自己的使用。它有很好的文檔記錄,至少你可以學習一些關於字符串的重要內容,然後閱讀Paul的材料。
如果我想要速度,我會使用C++和STL以及固定爲8個字節的自定義字符串類。 8個字節很好地對齊並且是64位,因此可以在單個機器指令中進行比較。
使用STL,您可以選擇使用std :: set,std :: map,unordered_set,std :: list或任何其他STL兼容結構。
你好,我正在尋找優化Java代碼。該應用程序使用大量的字符串集合,我的字符串是固定大小 – niraj 2010-08-06 18:48:37
@niraj:你沒有在你的問題中這麼說。我會爲你編輯你的問題,但你需要說明你在問題中詢問的語言和平臺。 – 2010-08-06 20:30:50
'dictionary based collections'? HashMap是默認選擇。它和O(1)一樣快。 它與元素的大小沒有固定或沒有。
如果你的意思是一個字符串集合,我會去用Java的默認HashSet
。如果你需要更快的東西(就查找時間而言),你可以使用Trie。嘗試非常快速的查找(O(字符串的長度)),而不考慮數據結構中字符串的數量,並且可以非常緊湊。
但是,請先用HashSet
先測試您的代碼。有多達數百萬個小型字符串,我不認爲它會很慢。
一般來說,你不能真正擁有「快速收集」,因爲每個數據結構都有自己的優勢和劣勢。
如果你想快速添加和迭代,ArrayList
是好的。如果您進行了大量刪除,則可能需要使用LinkedList
。如果你想快速查找,HashSet
是好的,等等。
如果你有併發訪問,還有其他潛在的更適合的數據結構。有時,結合多個數據結構也可能有所幫助。
總之,你需要告訴我們你要使用你的數據結構。
什麼語言/平臺? – 2010-08-05 19:13:57
你有幾個字符串?成千上萬的?百萬?十億? – 2010-08-05 19:16:15