Comment initialiser un tableau dynamique dans Java?
Si j'ai une classe qui doit retourner un tableau de chaînes de dimension variable (et que cette dimension ne pouvait être déterminée lors de l'exécution d'une méthode de la classe), comment dois-je déclarer le tableau dynamique dans ma classe, constructeur?
Si la question n'était pas assez claire,
en php on peut simplement déclarer un tableau de chaînes de caractères comme des $my_string_array = array();
et ajoutez-y des éléments par $my_string_array[] = "New value";
Qu'est-ce que le code ci-dessus équivalent en java?
source d'informationauteur lock
Vous devez vous connecter pour publier un commentaire.
Vous voulez regarder dans la
java.util package
plus précisément leArrayList
classe. Il a des méthodes telles que.add() .remove() .indexof() .contains() .toArray()
et plus encore.Plaine java les tableaux (c'est à dire
String[] strings
) ne peut pas être redimensionné dynamiquement; lorsque vous êtes hors de la chambre, mais vous voulez continuer à ajouter des éléments à votre tableau, vous devez créer un plus gros et copie le tableau existant dans sa premièren
positions.Heureusement, il y a
java.util.List
implémentations qui font ce travail pour vous. Les deuxjava.util.ArrayList
etjava.util.Vector
sont mis en œuvre à l'aide de tableaux.Mais alors, avez-vous vraiment soin si les chaînes se trouvent être stockée dans un tableau, ou avez-vous besoin d'une collection qui vous permettra de continuer à ajouter des éléments sans se soucier de manque de place? Si ce dernier, alors vous pouvez choisir un ou plusieurs des fins générales de l'
List
implémentations. La plupart du temps, les choix sont les suivants:ArrayList
de base de la matrice de base de la mise en œuvre, non synchroniséVector
synchronisés, réseau sur la base de la mise en œuvreLinkedList
- Liste doublement chaînée de mise en œuvre, plus rapide pour insérer des éléments dans le milieu d'une listeAttendez-vous de votre liste afin d'avoir des éléments en double? Si des articles ne devrait jamais exister pour votre cas, alors vous devriez préférer un
java.util.Set
. Jeux sont garantis de ne pas contenir les éléments en double. Un bon général-des fins de mise en œuvre estjava.util.HashSet
.Réponse à la question de suivi
Pour accéder à des chaînes à l'aide d'un indice similaire à
$my_string_array["property"]
vous devez les placer dans unMap<String, String>
également dans lejava.util
paquet. Un bon usage de la carte de mise en œuvre estHashMap
.Une fois que vous avez créé votre carte,
map.put("key", "string")
pour ajouter des chaînesmap.get("key")
pour accéder à une chaîne de caractères par sa clé.Noter que
java.util.Map
ne peut pas contenir des doubles des clés. Si vous appelezput
consécutives avec la même clé, seule la valeur définie dans le dernier appel restera, le plus tôt sera perdu. Mais je suppose que c'est aussi le comportement de PHP tableaux associatifs, de sorte qu'il ne devrait pas être une surprise.Créer un
List
à la place.Pas de tableau dynamique en java, la longueur du tableau est fixe.
Une structure similaire est
ArrayList
, un vrai tableau est mis en œuvre sous-jacente.Voir le nom TableauListe 🙂