哈希映射是否可以包含由2个值组成的密钥?

时间:2011-11-03 11:02:21

标签: java hashmap

我在数据库中有一个包含10列的表。其中一列具有alphaneumaric值,该值被设置为hashmap的键,该hashmap将所有值作为hashmap中每行的对象。 例如:A10(键),rowobj(类)。现在在同一列中,另一个值作为A10出现。那么现在如果我们尝试从表中加载值到hashmap,键名是相同的,那么会有多个值注册到同一个键名吗?

我们还可以组合2列的值来为哈希映射创建唯一键吗?怎么做?

谢谢

4 个答案:

答案 0 :(得分:3)

两个选项:

  • 创建一个包装器对象,其中包含所有值作为字段,设置它们,然后map.put(id, rowObject)
  • 使用Multimap(番石榴)

答案 1 :(得分:2)

你不能使用表格的主键作为HashMap的键吗?

答案 2 :(得分:1)

您可以使用HashMap,其中键仍为A10,但现在值为List。

因此,您可以为同一个键设置多个值。插入第一个元素时,只需要注意插入时创建新List。可能是(伪代码):

HashMap<String, List> myMap = new HashMap<String,List>;

for (elements to insert){

if (!myMap.containsKey(element.key()))
   ArrayList myList = new ArrayList();
   myList.add(element);
   myMap.put(element.key(), myList);
}else{
   ArrayList myList = myMap.get(element.key());
   myList.add(element);
   myMap.put(element.key(), myList);
}
}

答案 3 :(得分:0)

如果你的意思是密钥 x 应该映射到列表 vals (这是 x 代表的值),那就是像这样容易做到(没有检查语法,所以不要指望它编译):

//assuming that the keys are of type int and values are of type String
Map<int,List<String>> myMap = new HashMap()<int, new ArrayList()<String>>;