Plain Java-Arrays (dh String[] strings
) kann nicht dynamisch geändert werden; Wenn Sie keinen Platz mehr haben, aber immer noch Elemente zu Ihrem Array hinzufügen möchten, müssen Sie einen größeren erstellen und das vorhandene Array in seine ersten n
Positionen kopieren.
Zum Glück gibt es java.util.List
Implementierungen, die diese Arbeit für Sie erledigen. Sowohl java.util.ArrayList
als auch java.util.Vector
werden mithilfe von Arrays implementiert.
Aber ist es dir wirklich egal, ob die Strings zufällig in einem Array gespeichert sind, oder brauchst du nur eine Sammlung, mit der du Dinge hinzufügen kannst, ohne dir Sorgen zu machen, dass dir kein Platz mehr zur Verfügung steht? Wenn Letzteres, dann können Sie eine der verschiedenen allgemeinen List
Implementierungen draußen auswählen. Die meiste Zeit die Möglichkeiten sind:
ArrayList
- Grund Array-basierte Implementierung, nicht
Vector
synchronisiert - synchronisiert, Array-basierte Implementierung
LinkedList
- doppelt verknüpfte Liste Implementierung schneller für Elemente in der Mitte einfügen einer Liste
Erwarten Sie, dass Ihre Liste doppelte Einträge enthält? Wenn doppelte Artikel für Ihren Anwendungsfall nie existieren sollten, sollten Sie eine java.util.Set
bevorzugen. Sets enthalten garantiert keine doppelten Objekte. Eine gute Implementierung für allgemeine Zwecke ist java.util.HashSet
.
Antwort Frage
Um den Zugriff Strings $my_string_array["property"]
, ähnlich wie Follow-up müssen Sie sie in einem Map<String, String>
, auch im java.util
Paket über einen Index setzen. Eine gute allgemeine Kartenimplementierung ist HashMap
.
Sobald Sie Ihre Karte erstellt haben,
- Verwenden
map.put("key", "string")
in Strings hinzufügen
- Verwenden
map.get("key")
einen String durch seinen Schlüssel zuzugreifen.
Beachten Sie, dass java.util.Map
keine doppelten Schlüssel enthalten kann. Wenn Sie put
nacheinander mit demselben Schlüssel anrufen, bleibt nur der im letzten Gespräch eingestellte Wert erhalten, die früheren gehen verloren. Aber ich denke, das ist auch das Verhalten für assoziative PHP-Arrays, also sollte es keine Überraschung sein.
Um genau zu sein, es ist in 'java.util' (zusammen mit allen anderen Collection-Klassen). 'java.util.Collections' (mit Großbuchstaben C) ist eine Dienstprogrammklasse, kein Paket. –
@Peter guten Fang, habe ich meine Post –
als Follow-up-Frage, ist es auch möglich, String-Indizes zu erstellen [Beispiel: $ my_string_array ["Eigenschaft"]]? – lock