2016-08-15 8 views
3

私はチュートリアルからJAVAのHashMapを使って練習しています。 HashMapの実装コードがエラーでコンパイルに失敗し サンプル:ここシンボルが見つかりません - HashMap .replace()メソッド

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のクラスのjavadocを読んで、そして.replaceが有効にHashMapであることを確認していますメソッドを使用して、指定されたキーの値を置き換えます。しかし、私はcannot find symbol errorを得続けます。あなたの親切な助けに感謝します。基本的な質問を申し訳ありません。
MacOSX YosemiteにコンパイルプラグインがインストールされたjEdit Text Editorを使用しています。

+2

ハッシュマップは既存のキー** shoppingList.put( "Bread"、Boolean.FALSE); **の値を上書きするため、値を単純に上書きできます。別のアドバイスは、Boolean.FALSEまたは単にfalseを使用して型を混在させないことです。 – whyn0t

+0

@ whyn0t私はチュートリアルでオートブリーフィングを実証するために 'ブール'と 'ブール'の両方を使用していると思います。格納された値はまったく同じです。 – RealSkeptic

+0

@RealSkeptic私はそれが間違っていたとは言わなかった、それはちょうどプログラミングの練習をagoodている – whyn0t

答えて

4

Mapインタフェースのメソッドreplace(K,V)はどうやら、あなたはJavaの7またはそれ以前を使用してコードをコンパイルしている

のJava 8で導入された新しい方法です。

2つの解決策は以下のとおりです。

  1. Download a Java 8 JDK for Mac OS Xとあなたのコードをコンパイルするためにそれを使用します。
  2. replaceputに置き換えます。あなた以来、あなたの場合は

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

    :メソッドreplaceは鍵が事前に何らかの値を持っていない場合は、と同様に、新しい値がマップに配置されたくないときに使用する便利なメソッドですput何かBread何か先に、replaceは不要です - あなたはを知っていますBreadがあります。だからputを直接使用してください。

+0

ありがとうございます。この問題は、以下の指示に従って解決されています。私はMac用のJava 8 JDKをダウンロードしてインストールしました。プログラムは適切にコンパイルされました。 –

関連する問題