在 HashMap 中查找和替换值



我写了一个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)

我不知道为什么它说"实际参数是布尔值"!我想插入一个链接列表而不是布尔值

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));
       }
     }
   }

问题出在这个语句中:

Recomnder.addLikes("tom","movie tovi"); 

这样,您就可以告诉编译器您希望将 addLikes 作为静态方法访问。但是,它未定义为静态方法。您只能在 Recomnder 实例上调用 addLikes。因此,如果您将其更改为:

addLikes("tom","movie tovi"); 

它应该有效。
顺便说一句。尝试遵守 Java 命名约定。习惯于始终以小写字母开头的实例变量名称(例如,喜欢而不是喜欢)。这样你更容易发现这样的错误。

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

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

以前
Likes.put(s,Likes.get(s).add(fav));


Likes.get(s).add(fav);

在上面的代码中,Likes.get(s).add(fav)返回布尔值,并且此返回值正在添加到Map中。因此,编译器给出错误。

只需将字符串添加到 Likes.get(s) 就可以解决问题,因为 java 处理引用。这将按预期工作。

相关内容

  • 没有找到相关文章

最新更新