什么Java密钥:用于重复值的值数据类型?

时间:2012-02-27 23:18:15

标签: java

请原谅这个相当基本的问题,但我对Java很新,但仍然找到了解决方法。

我正在编写一个Web scraper,需要以某种方式存储密钥:值数据。到目前为止,我已经使用过HashMaps了,除了现在我需要允许唯一键的重复值。例如,应允许这样做:

Key:Value
abc : 123
cde : 727
efg : 123
hij : 123
klo : 876
opa : 909

任何人都可以建议在这些情况下最好使用什么?

由于

3 个答案:

答案 0 :(得分:4)

使用java.util.HashMap已经可以实现。它是重复的 Keys 是不可能的。

  

将键映射到值的对象。地图不能包含重复的键;每个键最多可以映射一个值。

来自java.util.MapJavaDoc(由HashMap实施)。

答案 1 :(得分:0)

你可以使用Map(HashMap没问题)和List。

Map<String,List<String>> map = new HashMap<String,List<String>>();

void put(String key, String value)
{
  List<String> entry = map.get(key);
  if(entry == null)
  {
    entry = new ArrayList<String>();
    map.put(key, entry);
  }
  entry.add(value);
}

List<String> get(String key)
{
  return map.get(key);
}

答案 2 :(得分:0)

我建议从钥匙到某种集合的地图。 Java中没有内置任何内容(尽管其他集合框架中有多个地图类型,如Apache CollectionsGuava)。如果您只想跟踪与每个键关联的值,没有订单或计数信息,您可以使用

Map<KeyType, Set<ValueType>> map = new HashMap<KeyType, Set<ValueType>>();

不幸的是,插入有点复杂。您需要测试密钥是否存在,如果不存在,请首先在密钥下添加Set<ValueType>。然后,您可以将新值添加到集合中。