2012-03-18 105 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與實際鍵和值的類型。