2012-03-18 101 views
0

我要添加重复键在地图中,输出类似下面:java中的关联数组?

google:Android,google:Maps,apple:iPod,apple:iPhone,apple:iOS 

是否有可能在Java或JSON?请帮帮我。

+0

您应该更改主题以表示MultiMap,因为那是您显然需要的。 [关联数组](https://en.wikipedia.org/wiki/Associative_array)只是一个哈希表或哈希映射。 – 2016-08-24 17:51:56

回答

3

是的,有可能在Java中。检查Apache的MultiMap.

+1

我认为apache的multihashmap已被弃用。 – 2012-03-18 04:49:42

+1

@ user1021904不,它只是[移至'map'子包(http://commons.apache.org/collections/api-release/org/apache/commons/collections/map/MultiValueMap.html)。 – 2012-03-18 04:51:31

+0

也许你应该链接到4.1 Javadoc。 – 2016-08-24 17:47:45

3

我喜欢的多重映射答案的上方。但是如果你想坚持java.util集合,请尝试一个列表图。

+0

请帮我怎么做? – 2012-03-18 04:51:43

+2

无论如何,MultiMap只是一个更好的API封装器,可以使用ArrayList键。 – 2012-03-18 04:53:58

+0

@ user1021904 - 向我们展示如果您需要帮助,请使用列表地图。 – 2012-03-18 04:58:54

2

地图在Java中不能有重复的键,但是你可以把多个值特定键:

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

您还可以使用MultivaluedMap

+0

Kunda bora - 您需要学习如何使用Markdown来正确设置您的答案格式。阅读帮助页面。 – 2012-03-18 04:56:39

+0

是啊,你是对的..我会照顾这个。 – 2012-03-18 04:57:39

3

甚至比地图列表更好的是地图上套,假设你只希望允许重复而不是重复协会。它可以做这样的:

import java.util.*; 
Map<K, Set<V>> yourMap = new HashMap<K, Set<V>>(); 

public void add(K key, V value) { 
    if (!yourMap.containsKey(key)) { 
     yourMap.put(key, new HashSet<V>()); 
    } 
    yourMap.get(key).add(value); 
} 

更换KV与实际键和值的类型。