21

文字列から文字列へのマップを作成しようとしています。以下は私が試したものですが、どちらの方法も機能しません。どうしたの?

public class Data
{
    private final Map<String, String> data = new HashMap<>();
    data["John"] = "Taxi Driver";
    data.put("John", "Taxi Driver");
}
4

4 に答える 4

61

ここには 2 つの問題があります。

まず、[]他の言語で使用できるように構文を使用することはできません。角括弧は Java の配列にのみ適用されるため、整数インデックスでのみ使用できます。

data.putは正しいですが、これはステートメントであるため、メソッド ブロックに存在する必要があります。クラス レベルで存在できるのは、フィールド宣言だけです。すべてがメソッドのローカル スコープ内にある例を次に示します。

public class Data {
     public static void main(String[] args) {
         Map<String, String> data = new HashMap<String, String>();
         data.put("John", "Taxi Driver");
         data.put("Mark", "Professional Killer");
     }
 }

Map.ofマップをクラスの静的フィールドとして初期化する場合は、Java 9 以降を使用できます。

public class Data {
    private static final Map<String, String> DATA = Map.of("John", "Taxi Driver");
}

Java 9 より前では、静的初期化ブロックを使用して同じことを実現できます。

public class Data {
    private static final Map<String, String> DATA = new HashMap<>();

    static {
        DATA.put("John", "Taxi Driver");
    }
}
于 2013-05-23T16:50:34.393 に答える
3

コードにある 2 つのエラーは大きく異なります。

Map最初の問題は、ステートメントなしでクラスの本体に初期化してデータを入力していることです。クラスの本体にstaticMapstatic {//TODO manipulate Map}ステートメントを含めるか、メソッドまたはクラスのコンストラクターで Map を初期化して設定することができます。

Map2 番目の問題は、 を構文的に のように扱うことができないarrayため、ステートメントdata["John"] = "Taxi Driver";を に置き換える必要があることdata.put("John", "Taxi Driver")です。に "John" キーが既にある場合HashMap、その値は "Taxi Driver" に置き換えられます。

于 2013-05-23T16:52:49.623 に答える
2

このコードを試してください

HashMap<String, String> map = new HashMap<String, String>();
map.put("EmpID", EmpID);
map.put("UnChecked", "1");
于 2013-05-23T16:49:43.163 に答える