Erhalte ArrayListNameValuePair-Wert anhand des Namens

8

Ist es eine korrekte Methode, ArrayList<NameValuePair> value nach Namen zu erhalten?

%Vor%

Oder gibt es eine Verknüpfung, um auf ArrayList<NameValuePair> value über den Namen zuzugreifen?

    
Raptor 05.06.2013, 12:17
quelle

4 Antworten

10

Nein - Sie speichern sie als eine Liste, auf die nicht mit "Schlüssel" zugegriffen werden kann - sie hat keine Ahnung von einem Schlüssel.

Es klingt wirklich so, als wollten Sie etwas wie Map<String, String> - vorausgesetzt, Sie müssen nur einen einzelnen Wert für jede Taste speichern.

Wenn du bei ArrayList feststeckst (und ich würde zumindest den Parameter-Typ ändern in List , wenn nicht Iterable , da das alles ist, was du brauchst), dann ist das, was du hast, in Ordnung.

    
Jon Skeet 05.06.2013, 12:20
quelle
6

Wenn Sie stattdessen Map verwenden können, funktionieren sie folgendermaßen:

%Vor%

Mit einem HashMap werden die Schlüssel nicht als Liste gespeichert, daher ist dies schneller und Sie müssen keine Funktion verwenden, um den Container zu iterieren.

Sie können dann auf alle Werte mit myMap.keySet() und myMap.values() zugreifen, siehe Dokumentation .

    
Djon 05.06.2013 12:29
quelle
4

Es scheint, dass Sie eine andere Datenstruktur benötigen. Zum Beispiel Map<Name, Value> oder Map<Name, NameValuePair> wenn Sie möchten.

Die erste Lösung ist wahrscheinlich korrekter, die zweite ist einfacher zu implementieren, wenn Sie bereits Code haben, der die Tatsache verwendet, dass Paare in der Liste gespeichert sind. Map ermöglicht das Sammeln von Werten; Collection ist eine Superschnittstelle von List .

    
AlexR 05.06.2013 12:21
quelle
1

Wenn Ihr Schlüssel oder Name eine Ganzzahl ist, schlage ich vor, stattdessen ein SparseArray zu verwenden: Ссылка

Dann können Sie verschiedene Funktionen verwenden, um die gewünschten Werte mit dem Schlüssel, dem Wert oder dem Index im Array abzurufen.

    
Yoann Hercouet 05.06.2013 12:26
quelle

Tags und Links