如何将键值作为其他地图的关键?
问题描述:
我希望把值的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);
对其他人也一样。你能帮我做这个吗?
答
你可以得到那些(键,值)对与使用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
注代码中存在一个小小的错误。 HashMap可能只有一个值对应一个键,所以在你的情况下,它只包含两个键值对:(“A”,5)和(“B”,8)。 – dgl 2012-08-03 16:10:59
我想知道你为什么想这样做。你以后想如何在你的第二张地图中查找值? – maasg 2012-08-04 09:01:05