De longueur Variable (Dynamique) des Tableaux en Java
Je me demandais comment initialiser un tableau d'entiers tels que c'est la taille et de la modification des valeurs par le biais de l'exécution de mon programme, des suggestions?
Vous devez vous connecter pour publier un commentaire.
Oui: l'utilisation ArrayList.
En Java, les tableaux "normaux" sont de taille fixe. Vous devez leur donner une taille et ne peut pas développer ou d'un contrat d'eux. Pour modifier la taille, vous devez faire un nouveau tableau et de copier les données que vous voulez - qui est inefficace et une douleur pour vous.
Heureusement, il y a toutes sortes de classes qui implémentent les structures de données communes, et d'autres outils utiles aussi. Vous aurez envie de vérifier la version 6 de Java API pour une liste complète de ces.
Une mise en garde: ArrayList ne peut tenir des objets (par exemple les Entiers), pas de primitives (par exemple ints). Dans la PLUPART des cas, l'autoboxing/autounboxing prendra en charge pour vous, en silence, mais vous pourriez obtenir un peu bizarre le comportement en fonction de ce que vous faites.
int[] array = new int[size];
size
est une variable, mais la longueur d'un tableau doit être fixe, ai-je le droit?@Seigneur Torgamussize
que le programme continue, ça devient n'importe quelle taille qui se trouve être danssize
lorsque cette ligne est exécutée.null
à la fin. Des idées pourquoi?Tableaux en Java sont de taille fixe. Ce que vous avez besoin est une liste de tableaux, l'un des un certain nombre de très riches Collections disponibles dans Java.
Au lieu de
vous utilisez
Ensuite modifier la liste vous utilisez
ints.add(y)
etints.remove(z)
parmi beaucoup d'autres pratique des méthodes que vous pouvez trouver dans la documentation Javadoc.Je recommande fortement d'étudier les Collections de classes en Java disponible car ils sont très puissants et vous donner beaucoup de builtin fonctionnalités Java débutants ont tendance à essayer de réécrire eux-mêmes inutilement.
List<Integer>
au lieu deArrayList<Integer>
?Les tableaux sont de taille fixe une fois instancié. Vous pouvez utiliser une Liste à la place.
L'autoboxing faire une Liste utilisable similaire à un tableau, vous pouvez mettre simplement int-valeurs en elle:
Je suis en désaccord avec les réponses précédentes suggérant
ArrayList
, parce queArrayList
est pas un Tableau Dynamique, mais une Liste soutenue par un tableau. La différence est que vous ne pouvez pas effectuer les opérations suivantes:Il vous donnera une IndexOutOfBoundsException car il n'y a pas d'élément à cette position pourtant, même si la sauvegarde de tableau permettrait un tel ajout. Si vous avez besoin d'utiliser un Tableau extensible mise en œuvre, comme suggéré par @randy-lance
Source : Comment faire un tableau dynamique
Il est recommander d'utiliser la Liste de traiter de petite taille.
Si vous avez un grand nombre de numéros, JAMAIS utiliser la Liste et l'autoboxing,
Liste< Integer> liste
Pour chaque type int, un nouveau Entier est automatiquement créé. Vous trouverez qu'il devient lent lorsque la taille de la liste d'augmenter. Ces Entiers sont des objets inutiles.
Dans ce cas, utiliser une estimation de la taille serait mieux,
Comment sur l'utilisation d'un
List
à la place? Par exemple,ArrayList<integer>
Vous ne pouvez pas modifier la taille d'un tableau. Toutefois, vous pouvez créer un nouveau tableau avec le bouton droit de la taille et de copier les données de l'ancien tableau à la nouvelle.
Mais votre meilleure option est d'utiliser IntList de jacarta communes. (ici)
Il fonctionne comme une Liste, mais prend moins de place et est plus efficace que cela, car il stocke int au lieu de stocker des objets wrappers sur int (c'est ce que la classe Integer est).
J'ai répondu à cette question, et aucun de vous n'avez pas besoin d'une liste de tableaux ou de tout autre chose que ce était une mission et j'ai terminé il donc oui, les tableaux peuvent augmenter en taille. Voici le lien
Comment utiliser Java Tableau Dynamique
et voici le lien pour ma question que j'ai répondu
Java les tableaux Dynamiques