2012-04-25 21 views
1

我試圖給一個地圖上的鍵一個以上的值。我想要這樣的東西工作。 mapp.put(「key1」,「value1」) mapp.put(「key1」,「value2」)。 第一個值「value1」正在被「value2」覆蓋。如何保留這兩個值?我應該去爲地圖以外的任何其他事情發生嗎?使用集合 - 地圖

回答

1

您可以使用un map和list。類似的東西:

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

對於把key1與第一值:

if (!map.containsKey("key1")) { 
    map.put("key1", new LinkedList<String>()); 
} 
map.get("key1").add("value1"); 

對於添加第二個值key1

map.get("key1").add("value2"); 

你可以擁有這一切的一個方法

public void add(String key, String value) { 
    if (!map.containsKey(key)) { 
     map.put(key, new LinkedList<String>()); 
    } 
    map.put(key, value); 
} 

如果你想爲key1值,你獲得List

List<String> values = map.get("key1"); 
2

將兩個valyes放入另一個集合(Vector,Set,Stack,適合您的用法;或任何其他集合),並將帽子集合作爲值存儲在地圖中。

隨機例如使用Vector:

Vector<Object> myVector = new Vector<Object>(); 
myVector.add("value1"); 
myVector.add("value2"); 
mapp.put("key1", myVector); 
+0

試過這種..和它的工作.. thankq .. :) – maryJane 2012-04-25 06:27:43

0

還檢查了多重映射,如果你想與行爲

1

Map的Javadoc的地圖,

A map cannot contain duplicate keys; each key can map to at most one value.

所以,如果你想爲單個鍵設置多個值,你需要將值添加到列表中並將key1和列表放到地圖中。

1
HashMap<K, HashSet<V>> map = new HashMap<K, HashSet<V>>(); 
if(!map.containsKey(k)) { 
    map.put(k, new HashSet<V>()); 
} 
map.get(k).add(v); 

如果您有重複值,請使用list/vector而不是hashset。