如何将键值作为其他地图的关键?

问题描述:

我希望把值的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

您可以先获取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

你可以得到那些(键,值)对与使用entrySet方法的集合。迭代该集合,并将元素用作其他HashMap中的键。

事情是这样的:

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

或者你可以将它们存储在像这样的对:

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