2013-10-16 85 views
1

我保存的值到Hashmap<String,Records> 樣品價值1,objRecord12,objRecord21,objRecord3等等......我需要從HashMap的字符串,其檢索的所有記錄值的一個關鍵是1檢索HashMap的列表到另一個列表中,有許多值

像 (我在這裏本身搞亂) arrayList myArraylist=Hashmap.get(1);

+0

'HashMap'不能有兩個元素具有相同的鍵。 –

+0

那我該用什麼? – onkar

+2

您可以使用apache commons中的'MultiMap'實現(http://commons.apache.org/proper/commons-collections/javadocs/api-3.2.1/org/apache/commons/collections/MultiMap.html)或google專輯 –

回答

0
arrayList myArraylist=Hashmap.get("1"); 

爲了滿足您的Hashmap聲明必須是

Map<String,List<Record>> myMap = new HashMap<>(); 

雖然增加添加到list

實例添加到map

if(myMap.containsKey("1")){ 
     myMap.put("1", myMap.get("1").add(new Record()));//record obj 
     }else{ 
     List<Record> list = new ArrayList<>(); 
     list.add(record); 
     myMap.put("1", list)); 
    } 

再回到

List<Record> list = myMap.get("1"); 
+0

如何添加和檢索值? – onkar

+0

@onkar更新了我的帖子。希望有所幫助。讓我知道進一步的澄清。 –

2

使用Multimap將是最簡單的,在我看來。

http://google-collections.googlecode.com/svn/trunk/javadoc/com/google/common/collect/Multimap.html

也就是說,如果你願意增加對谷歌公共:)

注意的依賴:這是不是從Apache的百科全書一樣MultiMap(注意大小寫不同)。

+1

我也推薦在apache commons上使用Guava庫。一個解決許多問題的導入。 – tom

+1

是的。番石榴使用泛型。Apache Commons不 –

+0

同意 - Guava是一個偉大的圖書館 – yamafontes

0

使用列表或設置爲值,則繼續更新該列表或設置。

Hashmap<String, ArrayList<Records>> 
0

是否需要對每個密鑰的多個記錄進行排序?如果是這樣,例如:

Map<String, List<Record>> 

是合適的。否則,Guava MultiMap將是適合的。

0

更好的方法是將List用作hashmap中的值。

喜歡的東西:HashMap<String, List<Record>>

當你想將記錄在地圖上,你可以這樣做:

void insertRecord(String key, Record record){ 
    List<Record> records = map.get(key); 
    if(records == null){ 
     records = new ArrayList<Record>(); 
     map.put(key, records); 
    } 
    records.add(record); 
} 
0

如果你想每個鍵則最好使用記錄集的多張記錄值

Map<String, Set<Record>> 
相關問題