Переменная длина (Динамические) Массивы в Java

Я задавался вопросом, как инициализировать целочисленный массив, таким образом, что это - размер и оценивает изменение посредством осуществления моей программы, каких-либо предложений?

106
задан Mohammad Sepahvand 11 March 2010 в 16:22
поделиться

5 ответов

Да: используйте ArrayList .

В Java «нормальные» массивы имеют фиксированный размер. Вы должны указать им размер и не можете их расширять или сжимать. Чтобы изменить размер, вам нужно создать новый массив и скопировать нужные данные, что неэффективно и причиняет вам боль.

К счастью, существуют всевозможные встроенные классы, реализующие общие структуры данных, а также другие полезные инструменты. Вы можете проверить API Java 6 , чтобы увидеть их полный список.

Одно предостережение: ArrayList может содержать только объекты (например, целые числа), но не примитивы (например, целые числа).В БОЛЬШИНСТВЕ случаев autoboxing / autounboxing позаботится об этом за вас незаметно, но вы можете получить странное поведение в зависимости от того, что вы делаете.

117
ответ дан 24 November 2019 в 03:50
поделиться

Вы не можете изменить размер массива. Однако вы можете создать новый массив нужного размера и скопировать данные из старого массива в новый.

Но лучше всего использовать IntList из jacarta commons. ( здесь )

Он работает так же, как List, но занимает меньше места и более эффективен, чем это, потому что он хранит int вместо хранения объектов оболочки над int (что и есть класс Integer).

4
ответ дан 24 November 2019 в 03:50
поделиться

Массивы в Java имеют фиксированный размер. Вам понадобится ArrayList, одна из очень ценных коллекций, доступных в Java.

Вместо

Integer[] ints = new Integer[x]

вы используете

List<Integer> ints = new ArrayList<Integer>();

Затем для изменения списка вы используете ints.add (y) и ints.remove (z) среди многих других удобных методов вы можете найти в соответствующей документации Javadocs.

Я настоятельно рекомендую изучить классы коллекций, доступные в Java, поскольку они очень мощные и дают вам множество встроенных функций, которые новички в Java склонны без надобности пытаться переписать.

36
ответ дан 24 November 2019 в 03:50
поделиться

Как насчет использования списка вместо этого? Например, ArrayList

4
ответ дан 24 November 2019 в 03:50
поделиться

После создания массива массивы имеют фиксированный размер. Вместо этого вы можете использовать список.

Autoboxing делает список пригодным для использования, как массив, вы можете просто поместить в него int-значения:

List<Integer> list = new ArrayList<Integer>();
list.add(1);
list.add(2);
list.add(3);
23
ответ дан 24 November 2019 в 03:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: