请原谅这个相当基本的问题,但我对Java很新,但仍然找到了解决方法。
我正在编写一个Web scraper,需要以某种方式存储密钥:值数据。到目前为止,我已经使用过HashMaps了,除了现在我需要允许唯一键的重复值。例如,应允许这样做:
Key:Value
abc : 123
cde : 727
efg : 123
hij : 123
klo : 876
opa : 909
任何人都可以建议在这些情况下最好使用什么?
由于
答案 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 Collections和Guava)。如果您只想跟踪与每个键关联的值,没有订单或计数信息,您可以使用
Map<KeyType, Set<ValueType>> map = new HashMap<KeyType, Set<ValueType>>();
不幸的是,插入有点复杂。您需要测试密钥是否存在,如果不存在,请首先在密钥下添加Set<ValueType>
。然后,您可以将新值添加到集合中。