C # flüchtling sucht ein wenig Hilfe bei Java-Sammlungen

8

Ich muss Schlüssel / Wert-Informationen in irgendeiner Art von Sammlung speichern. In C # würde ich ein Wörterbuch wie folgt definieren:

%Vor%

Dann würde ich auf die Werte so zugreifen:

%Vor%

Wie mache ich das in Java? Ich habe Beispiele mit ArrayList gesehen, aber ich würde gerne die Lösung mit Generika, wenn möglich.

    
AngryHacker 22.06.2009, 20:27
quelle

6 Antworten

22

Sie möchten ein Map

verwenden %Vor%

Beachten Sie, dass ich in der letzten Zeile hätte sagen können:

%Vor%

Was eine Kurzform für (mit Java automatisches Unboxing) ist:

%Vor%

Wenn in der Map kein Wert für den angegebenen Schlüssel vorhanden ist, gibt get null zurück und dieser Ausdruck gibt NullPointerException aus. Daher ist es immer eine gute Idee, in diesem Fall boxed type Integer zu verwenden

    
oxbow_lakes 22.06.2009, 20:29
quelle
7

Verwende ein java.util.Map . Es gibt mehrere Implementierungen:

  • HashMap : O (1) lookup, verwaltet nicht die Reihenfolge der Schlüssel
  • TreeMap : O (log n) lookup, verwaltet die Reihenfolge der Schlüssel, sodass Sie sie in einer garantierten Reihenfolge durchlaufen können
  • LinkedHashMap : O (1) lookup, iteriert über Schlüssel in der Reihenfolge, in der sie der Karte hinzugefügt wurden.

Sie verwenden sie wie:

%Vor%

Weitere Informationen zum Arbeiten mit Sammlungen finden Sie in der Google Sammlungen-Bibliothek . Es ist ausgezeichnet.

    
Nat 22.06.2009 20:31
quelle
6

Sie verwenden ein Map in Java.

Beachten Sie, dass Sie int (oder einen anderen primitiven Typ) nicht als generischen Typparameter verwenden können, aber aufgrund von Autoboxing verhält es sich immer noch fast als wäre es ein Map<String, int> anstelle von Map<String, Integer> . (Allerdings möchten Sie in leistungsabhängigem Code nicht viel Autoboxing durchführen.)

%Vor%     
Michael Myers 22.06.2009 20:30
quelle
2

Es sieht so aus, als ob Sie nach etwas suchen wie HashMap

    
z - 22.06.2009 20:29
quelle
1
%Vor%

als Alternative können Sie versuchen Enum:

%Vor%

test:

%Vor%     
dfa 22.06.2009 20:31
quelle
1

Sie möchten definitiv ein HashMap , das ist die Java-Version von C # Dictionary .

    
Paul Sonier 22.06.2009 20:30
quelle

Tags und Links