這是在java中存儲重複值的最佳數據結構?從它檢索價值是多麼容易!我應該在java中使用哪種數據結構來存儲重複值?
謝謝 編輯#1我正在閱讀1000個文件的內容,並且我想將每個文件內容作爲標記放在某些數據結構中。我使用Hashtable,但當我這樣做時,我無法查看許多單詞。這就是爲什麼我想要一個可以存儲重複值的數據結構。
這是在java中存儲重複值的最佳數據結構?從它檢索價值是多麼容易!我應該在java中使用哪種數據結構來存儲重複值?
謝謝 編輯#1我正在閱讀1000個文件的內容,並且我想將每個文件內容作爲標記放在某些數據結構中。我使用Hashtable,但當我這樣做時,我無法查看許多單詞。這就是爲什麼我想要一個可以存儲重複值的數據結構。
只需存儲簡單值,就應該使用List<E>
接口的實現。
要從List<E>
你可以做以下獲取數據:
list.get(index); // will get data at a given index
// or you can iterate over all of the items in the list
for(E item: list) {
// use E
}
根據你使用任何一個ArrayList<E>
或LinkedList<E>
會做你的需要。
另一種選擇是Map<K, V>
(它的實現HashMap
)。這將允許您在唯一鍵下保存重複的值。
你可以得到的值從以下幾方面一Map<K,V>
的:
map.get(someKey); // will retrieve the value associated with a key
// or you can iterate through all of the entries in a map like so:
for(Entry<K,V> entry: map.entrySet()){
// use entry
}
回答您的編輯:
您可能需要使用Map<String, List<String>>
,其中的關鍵是的名稱文件,並且該值是文件中單詞的列表。
您的代碼可能是這樣的:
Map<String, List<String>> data = new HashMap<String, List<String>>();
for(File f: files) {
List<String> words = new ArrayList<String();
data.put(f.getName(), words);
Scanner s = new Scanner(f);
while(s.hasNext()) {
words.add(s.next());
}
}
在這個snipit結束,data
將與每個文件中的單詞列表來填補。
您應該使用List<E>
但您應該實施int[] getDuplicateValuesIndexes(String value)
方法和int getCount(String value)
。這些將會很有用,因爲在List<E>
實現中,沒有什麼可以處理重複值,因爲它們只存儲任何類型的值。
任何沒有實現Set接口的java.util.Collection。可能你會想要實現List的東西。
使用數組獲得價值使用指數(我知道它的不完整答案,但問題也是如此)
你是什麼意思的「重複值?」什麼數據被存儲?您需要對這些值執行哪些操作?沒有更多的信息,這是無法回答的。 – syrion 2010-12-14 15:42:40
你需要重複的值還是重複的參考?換句話說,您是否有多個包含相同內容的對象,或者您是否需要對同一對象進行多次引用? – 2010-12-14 15:55:17
有什麼內容?號碼?你希望以後如何訪問這些內容? – 2010-12-14 19:27:08