Jeśli nie lubisz używać własnego pętli i metodę lista add
bezpośrednio potem jest inna droga. Stwórz swoją ArrayList
z liczbą elementów chcesz go bezpośrednio tak:
final int MAX_ELEMENTS = 1000;
List<Integer> myList = new ArrayList<Integer>(
Collections.<Integer>nCopies(MAX_ELEMENTS, null));
Albo, jeśli masz już listę, którą chcesz powiększyć rozmiar przez n
elementów:
myList.addAll(Collections.<Integer>nCopies(n, null));
(Uwaga, założyłem tutaj, że lista będzie zawierała obiekty Integer
, ale można to zmienić na niestandardowy typ. Jeśli pracujesz z typami raw/pre-Java 5, po prostu upuść ogólne deklaracje.)
Co do rzeczywistego pytania: pojemność! = Zawartość. ArrayList wewnętrznie ma zarówno tablicę fizyczną, jak i liczbę rzeczywistych elementów. Zwiększenie pojemności, zmienia wewnętrzną tablicę tak, aby mogła pomieścić wiele elementów, jednak liczba nie ulega zmianie. Musisz dodać elementy, aby zwiększyć tę liczbę.
Z drugiej strony, jeśli próbujesz ustawić określone elementy i znasz maksimum, którego chcesz użyć, dlaczego nie użyć bezpośrednio tablicy? Jeśli musisz przekazać tę tablicę do interfejsu API, który ma List
s, użyj Arrays.asList
. Inne klasy nadal mogą zmieniać zawartość tablicy, ale nie będzie w stanie zwiększyć jej rozmiaru lub pojemności.
To byłoby najczystsze rozwiązanie, ale ArrayList jest używana jako argument w metodzie, która zajmuje tylko ArrayList. Może gdybym miał wystarczająco dużo czasu, przeładowuję go za pomocą Map. –
Możesz także rozważyć załadowanie mapy, a następnie napisanie metody budowania tablicy ArrayList z zawartości mapy po jej załadowaniu. Ale jeśli naprawdę potrzebujesz ArrayList, rozwiązanie opublikowane przez Bozho może być w porządku. –
"ArrayList jest używana jako argument w metodzie, która pobiera tylko ArrayList" Poważnie? Istnieje kod, który bierze 'ArrayList' zamiast tylko' List'? – Powerlord