我正在练习使用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文本编辑器和MacOSX Yosemite上安装的Compile插件。
答案 0 :(得分:5)
replace(K,V)
接口中的方法Map
是Java 8中引入的新方法。
显然,您正在使用Java 7或更早版本编译代码。
两种可能的解决方案是:
将replace
替换为put
。方法replace
是一种方便的方法,如果您不希望将新值放在地图中,如果密钥事先没有某个值,则使用该方法,类似于:
if ( shoppingList.contains("Bread") ) {
shoppingList.put("Bread",Boolean.FALSE);
}
在您的情况下,由于put
早些时候提到Bread
几行,replace
就没有必要了 - 您知道 Bread
在那儿。所以直接使用put
。