Java 在HashMap中查找和替换值?

Java 在HashMap中查找和替换值?,java,linked-list,hashmap,Java,Linked List,Hashmap,我编写了一个HashMap,其中键是字符串,值是字符串的LinkedList 我想写一个使用键的方法,键是字符串和值。然后我想在HashMap中找到与给定键匹配的键,然后将给定的字符串添加到字符串列表中 **谢谢大家,但还有一个错误。 在这行中,“Likes.put(s,Likes.get(s),add(fav));”它说: Error: no suitable method found for put(java.lang.String,boolean) method java.util

我编写了一个HashMap,其中键是字符串,值是字符串的LinkedList

我想写一个使用键的方法,键是字符串和值。然后我想在HashMap中找到与给定键匹配的键,然后将给定的字符串添加到字符串列表中

**谢谢大家,但还有一个错误。 在这行中,“Likes.put(s,Likes.get(s),add(fav));”它说:

Error: no suitable method found for put(java.lang.String,boolean)
    method java.util.HashMap.put(java.lang.String,java.util.LinkedList<java.lang.String>) is not applicable
      (actual argument boolean cannot be converted to java.util.LinkedList<java.lang.String> by method invocation conversion)
    method java.util.AbstractMap.put(java.lang.String,java.util.LinkedList<java.lang.String>) is not applicable
      (actual argument boolean cannot be converted to java.util.LinkedList<java.lang.String> by method invocation conversion)
错误:找不到适合put的方法(java.lang.String,boolean)
方法java.util.HashMap.put(java.lang.String,java.util.LinkedList)不适用
(实际参数布尔值不能通过方法调用转换转换为java.util.LinkedList)
方法java.util.AbstractMap.put(java.lang.String,java.util.LinkedList)不适用
(实际参数布尔值不能通过方法调用转换转换为java.util.LinkedList)
我不知道为什么它说“实际参数是布尔的”!我想将LinkedList no插入布尔值

class  Recomnder {

  Recomnder(){
  Likes.put("tom",new LinkedList() ); 
  Recomnder.addLikes("tom","movie tovi"); 
  }

  HashMap<String,LinkedList<String>> Likes = new HashMap<String,LinkedList<String>>(); 


 void addLikes (String name, String fav){
     for (String s : Likes.keySet()) {
         if (s.equals(name))
         Likes.put(s,Likes.get(s).add(fav));
       }
     }
   }
类重组器{
推荐者(){
Likes.put(“tom”,newlinkedlist());
推荐者:addLikes(“汤姆”,“电影托维”);
}
HashMap Likes=新的HashMap();
void addLikes(字符串名称、字符串fav){
for(字符串s:Likes.keySet()){
如果(s.equals(name))
喜欢。放(s,喜欢。得到(s)。加(fav));
}
}
}

问题出在这句话中:

Recomnder.addLikes("tom","movie tovi"); 
这样,您就告诉编译器您希望以静态方法访问addLikes。但是,它并没有被定义为静态方法。您只能在Recomner实例上调用addLikes。因此,如果将其更改为:

addLikes("tom","movie tovi"); 
它应该可以工作。

顺便说一句,尝试遵守Java命名约定。习惯于总是以小写字母开头实例变量名(例如,用likes代替likes)。这样,您就更容易发现这样的错误。

实例方法需要从实例中调用。addLikes方法是一个实例方法(它没有修改器static)。您需要先创建类的实例,然后才能对其调用方法。

除了将方法更改为静态之外。更改以下语句


喜欢。放(s,喜欢。得到(s)。加(fav))


喜欢。获得。添加(fav)

在上面的代码中,Likes.get(s).add(fav)返回布尔值,这个返回值被添加到映射中。因此编译器给出了错误


只要将字符串添加到Likes.get就可以了,因为java可以处理引用。这将按预期工作。

编译器消息非常清楚,您应该能够自己调试它。您应该使用static void。。。对于addLikes()方法。。。