我試圖給一個地圖上的鍵一個以上的值。我想要這樣的東西工作。 mapp.put(「key1」,「value1」) mapp.put(「key1」,「value2」)。 第一個值「value1」正在被「value2」覆蓋。如何保留這兩個值?我應該去爲地圖以外的任何其他事情發生嗎?使用集合 - 地圖
1
A
回答
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
還檢查了多重映射,如果你想與行爲
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。
相關問題
- 1. 地圖集合
- 2. JPA,Hibernate,使用@MapKeyColumn的集合地圖
- 3. 要使用哪個地圖/集合?
- 4. 地圖集合表
- 5. 合併集合地圖集合的通用方法
- 6. XStream的地圖集合
- 7. Java集合和地圖
- 8. Howto驗證地圖集合
- 9. Java集合 - 在地圖
- 10. Java中的地圖集合
- 11. 推土機地圖集合
- 12. Cassandra集合到地圖
- 13. JPA地圖集合枚舉
- 14. 對象的地圖集合
- 15. Scala:如何合併地圖集合
- 16. Java集合地圖:如何檢索對象的地圖使用的containsValue功能
- 17. 可以使用集合,袋子,非收藏關係的地圖
- 18. 使用集合和地圖來讀取文本文件
- 19. 在clojure中使用具有不同尺寸集合的'地圖'
- 20. 爲什麼使用集合而不是地圖? C++
- 21. 什麼在使用地圖時返回一個集合
- 22. 如何使用位集合時在Java的地圖鍵
- 23. Java地圖和集合使用相同的添加方法
- 24. 使用循環創建多個地圖(集合)
- 25. 僅使用不可變集合創建Iterables的地圖
- 26. 使用流利NHibernate的時間跨度的地圖集合
- 27. java集合vs集合框架中的地圖
- 28. 地圖集合或複合列上的用戶定義類型?
- 29. 使用CompositeCollection展平集合的集合?
- 30. 減少座標對集合的地圖
試過這種..和它的工作.. thankq .. :) – maryJane 2012-04-25 06:27:43