Si vous ne souhaitez pas utiliser votre propre boucle et la liste méthode add
directement alors il y a une autre façon. Créez votre ArrayList
avec le nombre d'éléments que vous voulez directement comme ceci:
final int MAX_ELEMENTS = 1000;
List<Integer> myList = new ArrayList<Integer>(
Collections.<Integer>nCopies(MAX_ELEMENTS, null));
Ou, si vous avez déjà une liste que vous souhaitez étendre la taille par n
éléments:
myList.addAll(Collections.<Integer>nCopies(n, null));
(Note, j'ai supposé ici que la liste contiendrait Integer
objets, mais vous pouvez changer cela en votre type personnalisé. Si vous travaillez avec des types raw/pre-Java 5, supprimez simplement les déclarations génériques.)
En ce qui concerne votre question actuelle: capacité! = Contenu. Une ArrayList possède à la fois un tableau physique et un compte de ce qui s'y trouve réellement. Augmenter la capacité, modifie le tableau interne afin qu'il puisse contenir de nombreux éléments, cependant, le nombre ne change pas. Vous devez ajouter des éléments pour augmenter ce nombre.
D'autre part, si vous essayez simplement de définir des éléments spécifiques et de connaître le maximum que vous voulez utiliser, pourquoi ne pas utiliser un tableau directement? Si vous devez ensuite transmettre ce tableau à une API prenant List
s, utilisez Arrays.asList
. Les autres classes pourraient encore changer le contenu de votre tableau de sauvegarde, mais il ne serait pas en mesure d'augmenter la taille ou la capacité de celui-ci.
Ce serait la solution la plus propre, mais ArrayList est utilisé comme argument dans une méthode qui ne prend que ArrayList. Peut-être que si j'ai assez de temps je vais le surcharger pour utiliser Map insted. –
Vous pouvez également envisager de charger une carte, puis d'écrire une méthode pour créer une ArrayList à partir du contenu de la carte après son chargement. Mais si vous avez vraiment besoin d'un ArrayList, la solution affichée par Bozho pourrait être très bien. –
"ArrayList est utilisé comme argument dans une méthode qui ne prend que ArrayList" Sérieusement? Il y a du code là-bas qui prend 'ArrayList' plutôt que simplement' List'? – Powerlord