it-swarm.com.de

Wie füge ich Werte in eine Map <K, V> ein?

Ich versuche, eine Zuordnung von Zeichenfolgen zu Zeichenfolgen zu erstellen. Unten ist, was ich ausprobiert habe, aber keine Methode funktioniert. Was stimmt damit nicht?

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

Hier gibt es zwei Probleme.

Erstens können Sie nicht die [] Syntax, wie Sie sie in anderen Sprachen möglicherweise können. Eckige Klammern gelten nur für Arrays in Java und können daher nur mit Ganzzahlindizes verwendet werden.

data.put ist korrekt, aber das ist eine Anweisung und muss daher in einem Methodenblock vorhanden sein. Auf Klassenebene können nur Felddeklarationen existieren. Hier ist ein Beispiel, in dem sich alles im lokalen Bereich einer Methode befindet:

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

Wenn Sie eine Map als statisches Feld einer Klasse initialisieren möchten, können Sie Map.of , seit Java 9:

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

Vor Java 9 können Sie einen statischen Initialisierungsblock verwenden, um dasselbe zu erreichen:

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

    static {
        DATA.put("John", "Taxi Driver");
    }
}
58
Louis Wasserman

Die zwei Fehler, die Sie in Ihrem Code haben, sind sehr unterschiedlich.

Das erste Problem besteht darin, dass Sie Ihr Map im Hauptteil der Klasse ohne Anweisung initialisieren und füllen. Sie können entweder eine statische Map und eine static {//TODO manipulate Map} - Anweisung im Hauptteil der Klasse haben oder die Map in einer Methode oder im Klassenkonstruktor initialisieren und auffüllen.

Das zweite Problem ist, dass Sie ein Map nicht syntaktisch wie ein array behandeln können. Daher sollte die Anweisung data["John"] = "Taxi Driver"; Durch data.put("John", "Taxi Driver") ersetzt werden. Wenn Sie bereits einen "John" -Schlüssel in Ihrem HashMap haben, wird sein Wert durch "Taxifahrer" ersetzt.

3
Mena

Die Syntax lautet

data.put("John","Taxi driver");
2

Versuchen Sie diesen Code

HashMap<String, String> map = new HashMap<String, String>();
map.put("EmpID", EmpID);
map.put("UnChecked", "1");
2
MDMalik