2012-08-03 71 views
0

我希望把值的HashMap像下面,如何將鍵值作爲其他地圖的關鍵?

map1.put("A",3); 

    map1.put("A",5); 
    map1.put("B",4); 
    map1.put("B",8); 

現在我想讓(「A」,3)鍵/值對作爲其他地圖一樣關鍵, 讓的說(「A」, 3)是key1同樣的方式 map2.put(key1,abc);

對其他人也一樣。你能幫我做這個嗎?

+0

注代碼中存在一個小小的錯誤。 HashMap可能只有一個值對應一個鍵,所以在你的情況下,它只包含兩個鍵值對:(「A」,5)和(「B」,8)。 – dgl 2012-08-03 16:10:59

+0

我想知道你爲什麼想這樣做。你以後想如何在你的第二張地圖中查找值? – maasg 2012-08-04 09:01:05

回答

2

您可以先獲取hashMap entrySet並將其用作第二個hashMap的關鍵字。

entrySet返回

包含在此映射

例如映射的Set視圖,

1)設置firstMapEntries = map1.entrySet();

2)創建第二張圖

3)迭代firstMapEntries。

4)添加到第二個地圖secondMap.put(firstMapEntry, 「ABC」)

+0

我知道一樣,但請你提供詳細資料? – Rahul 2012-08-03 15:59:38

0

你可以得到那些(鍵,值)對與使用entrySet方法的集合。迭代該集合,並將元素用作其他HashMap中的鍵。

事情是這樣的:

// given HashMap<String, Integer> map1: 
for (Map.Entry<String, Integer> entry : map1.entrySet()) 
    map2.put(entry, "some string value"); 
0

或者你可以將它們存儲在像這樣的對:

class Pair 
{ 
    public String first; 
    public Integer second; 

    public Pair(String first, Integer second) 
    { 
     this.first = first; 
     this.second = second; 
    } 
} 

然後創建對的HashMap的 - 串對:

HashMap<Pair, String> map = new HashMap<Pair, String>(); 
+0

在基於散列的結構中用作鍵的任何類都必須。實現'equals'和'hashcode' – maasg 2012-08-04 09:09:45

相關問題