好的,我查找了一些关于我的问题的线索,但是在他们使用的每个解决方案中(至少是最重要的):
Map<Key, ArrayList<Value>> myMap = new HashMap...;
//this Map is an attribute of my first Object so the Key is the second
Object and my ArrayList is the relation
输入如:String1 (nr=2) relation String2
所以在我的情况下,我将获得一些名称和数字来创建一个对象(已经完成)。中间的关系字符串告诉我这些对象应该是哪个关系,但也可能Object of String1
与String2 Object
有关,但也与另一个String3 Object
有关。所以我现在的问题是,如果我从我的文件中读取输入,它将覆盖第一个关系。
但是如果我使用ArrayList的方法,我必须知道存在哪种关系。因为在我的输入文件中会有类似的内容:
String1 relation String2
String3 relation String5
String1 relation String4
所以我也不能只在地图中添加关系和第二个对象。
希望你理解我的问题。 (不是母语人士)
提前致谢
答案 0 :(得分:0)
检查地图中是否已存在密钥,如果是,只需添加与此密钥的关系:
if map.containsKey(key)
{
map.get(key).add(relation);
} else
{
List<Object> rel = new ArrayList<Object>();
rel.add(relation);
map.put(key, rel);
}
更新:进行打印,请使用:
for (Map.Entry<String, List<Object>> entry : map.entrySet())
{
String key = entry.getKey();
List<Object> values = entry.getValue();
for (Object value : values)
{
System.out.println(key + "=" + value);
}
}
答案 1 :(得分:0)
如果没有什么能阻止你,那么我会考虑使用已经编写过的多地图实现。你需要这样的东西
http://docs.guava-libraries.googlecode.com/git/javadoc/com/google/common/collect/Multimap.html
但是如果由于某种原因你不能只导入一个,那么上面的方法就好了!