找不到符号-HashMap .replace()方法

依卡巴比松

我正在从一个教程中练习在JAVA中使用HashMap。示例HashMap实现代码无法编译并显示以下错误:

DictionaryPractice.java:57: error: cannot find symbol
                              shoppingList.replace("Bread", Boolean.FALSE);
symbol:   method replace(String,Boolean)
location: variable shoppingList of type Map<String,Boolean>

这是代码:

import java.util.HashMap;
import java.util.Map;

public class DictionaryPractice {
    public static void main(String[] args) {
        Map<String, Boolean> shoppingList = new HashMap<String, Boolean>();

        // Put some stuff in dictionary
        shoppingList.put("Ham", true);
        shoppingList.put("Bread", Boolean.TRUE);
        shoppingList.put("Oreos", Boolean.TRUE);
        shoppingList.put("Eggs", Boolean.FALSE);
        shoppingList.put("Sugar", false);

        // Retrieve items
        System.out.println(shoppingList.get("Ham"));
        System.out.println(shoppingList.get("Oreos"));

        // Remove things
        shoppingList.remove("Eggs");

        // Replace values for a certain key
        shoppingList.replace("Bread", Boolean.FALSE);
    }
}

我已经阅读了HashMap类上的JavaDocs,并确认这.replace是替换指定键值的有效HashMap方法。但是,我一直收到cannot find symbol error您的帮助将不胜感激。对不起这个基本问题。
我正在将jEdit Text Editor与MacOSX Yosemite上安装的Compile插件一起使用。

怀疑论者

该方法replace(K,V)Map接口是Java 8引入了新的方法。

显然,您正在使用Java 7或更早版本来编译代码。

两种可能的解决方案是:

  1. 下载适用于Mac OS X的Java 8 JDK并使用它来编译代码。
  2. 更换replaceput该方法replace是一种便捷的方法,当您不希望新值预先放置在键中时,如果您不希望将新值放置在地图中,则该方法类似于:

    if ( shoppingList.contains("Bread") ) {
         shoppingList.put("Bread",Boolean.FALSE);
    }
    

    在您的情况下,由于您put需要Bread提前几行,replace所以没有必要-您知道Bread是存在的。因此,put直接使用即可。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章