array Java Plain (cioè String[] strings
) non può essere ridimensionato dinamicamente; quando sei fuori dalla stanza ma vuoi ancora aggiungere elementi al tuo array, devi crearne uno più grande e copiare l'array esistente nelle sue prime posizioni n
.
Fortunatamente, ci sono implementazioni java.util.List
che fanno questo lavoro per voi. Entrambi gli apparecchi java.util.ArrayList
e java.util.Vector
vengono implementati utilizzando gli array.
Ma poi, ti interessa davvero se le stringhe vengono memorizzate internamente in un array, o hai solo bisogno di una collezione che ti permetta di continuare ad aggiungere oggetti senza preoccuparti di rimanere senza spazio? In quest'ultimo caso, è possibile scegliere tra le varie implementazioni generali List
disponibili. Il più delle volte le scelte sono:
ArrayList
- dati di base implementazione basata array, non sincronizzate
Vector
- sincronizzati, a base di matrice implementazione
LinkedList
- implementazione lista doppiamente collegata, più veloce per inserire gli elementi in mezzo di un elenco
Aspetti che il tuo elenco abbia articoli duplicati? Se gli articoli duplicati non dovrebbero mai esistere per il tuo caso d'uso, allora dovresti preferire uno java.util.Set
. I set sono garantiti per non contenere oggetti duplicati. Una buona implementazione dell'insieme di scopi generali è java.util.HashSet
.
risposta al follow-up questione
Per le stringhe di accesso che utilizzano un indice simile a $my_string_array["property"]
, è necessario metterli in un Map<String, String>
, anche nel pacchetto java.util
. Un'implementazione di una buona mappa generale è HashMap
.
Una volta creata la mappa,
- Usa
map.put("key", "string")
per aggiungere stringhe
- Utilizzare
map.get("key")
di accedere a una stringa la sua chiave.
Nota che java.util.Map
non può contenere chiavi duplicate. Se si chiama put
in modo consecutivo con la stessa chiave, rimarrà solo il valore impostato nell'ultima chiamata, quelli precedenti verranno persi. Ma immagino che questo sia anche il comportamento degli array associativi di PHP, quindi non dovrebbe essere una sorpresa.
Per la precisione, è in 'java.util' (insieme a tutte le altre classi di raccolta). 'java.util.Collections' (con maiuscolo C) è una classe di utilità, non un pacchetto. –
@Peter good catch, ho corretto il mio post –
come una domanda successiva, è anche possibile creare indici di stringhe [ad esempio: $ my_string_array ["proprietà"]]? – lock