si no les gusta usar su propio bucle y el método de la lista add
directamente a continuación, hay otra manera. Cree su ArrayList
con el número de elementos que desea directamente como esto:
final int MAX_ELEMENTS = 1000;
List<Integer> myList = new ArrayList<Integer>(
Collections.<Integer>nCopies(MAX_ELEMENTS, null));
O, si ya tiene una lista que desea ampliar el tamaño de n
elementos:
myList.addAll(Collections.<Integer>nCopies(n, null));
(Nota, supone aquí que la lista sería la celebración de Integer
objetos, pero puede cambiar esto a su tipo personalizado. Si está trabajando con tipos raw/pre-Java 5, simplemente suelte las declaraciones genéricas.)
En cuanto a su pregunta real: capacidad! = Contenido. Un ArrayList internamente tiene una matriz física y un recuento de lo que realmente hay en ella. Aumentando la capacidad, cambia la matriz interna para que pueda contener tantos elementos, sin embargo, el recuento no cambia. Necesita agregar elementos para aumentar ese conteo.
Por otro lado, si usted está tratando de establecer elementos específicos y conocer el máximo que desea utilizar, por qué no utilizar una matriz directamente? Si luego necesita pasar esta matriz a una API que toma List
s, entonces use Arrays.asList
. Las otras clases aún podrían cambiar el contenido de su matriz de respaldo, pero no podría aumentar el tamaño o la capacidad de la misma.
Esa sería la solución más limpia, pero ArrayList se usa como argumento en un método que solo toma ArrayList. Tal vez si tengo suficiente tiempo lo sobrecargaré por usar Map insted. –
También podría considerar cargar un Mapa y luego escribir un método para construir un ArrayList a partir del contenido del mapa después de que se cargue. Pero si realmente necesita una ArrayList, la solución publicada por Bozho podría estar bien. –
"ArrayList se usa como argumento en un método que solo toma ArrayList" ¿En serio? Hay un código que toma 'ArrayList' en lugar de' List'? – Powerlord