我想使用HashMap
为每个密钥存储多个值。
我想我已经弄清楚我的代码有什么问题,但我不知道如何修复它。据我所知,每次方法发送新参数时,HashMap都会覆盖自身而不是添加新值。
如何阻止它覆盖自己,而是添加新标题。
HashMap<String, List<String>> owner = new HashMap<String, List<String>>();
public void Owner (String name, String title) throws Exception{
List<String> listTitle = new ArrayList<String>();
if(!listTitle.contains(title)){
listeTitle.add(title);
}
else if(listeTitle.contains(title)){
System.out.println("This person allready owns this title.");
}
eier.put(name, listTitle);
}
用于打印HashMap的方法:
public void PrintOwner(){
for (HashMap.Entry<String, List<String>> entry : owner.entrySet()) {
String key = entry.getKey();
List<String> values = entry.getValue();
System.out.println(key + " owns:" + values;
}
}
运行后我希望控制台看起来如何的示例:
Jon拥有:
[指环王]
[哈利波特]
戴夫拥有:
[火星人]
[冻]
但目前只显示:
Jon拥有:
[哈利波特]
戴夫拥有:
[冻]
答案 0 :(得分:4)
实施应该像
List titles = owner.get(name);
if (titles == null) {
titles = new ArrayList();
titles.add(title);
owner.put(name,titles);
} else if (titles.contains(title)) {
System.out.println("This person allready owns this title.");
} else {
titles.add(title);
}
答案 1 :(得分:0)
或更紧凑:
public void Owner (String namn, String title) throws Exception{
List<String> listTitle = owner.containsKey(nman)
? owner.get(namn) : new ArrayList<String>();