Мне было интересно, как инициализировать целочисленный массив так, чтобы его размер и значения менялись в процессе выполнения моей программы, какие-либо предложения?
Да: используйте ArrayList .
В Java "нормальные" массивы имеют фиксированный размер. Вы должны указать им размер и не можете их расширять или сжимать. Чтобы изменить размер, вы должны создать новый массив и скопировать нужные данные, что неэффективно и причиняет вам боль.
К счастью, существуют всевозможные встроенные классы, реализующие общие структуры данных, а также другие полезные инструменты. Вы можете проверить API Java 6, чтобы ознакомиться с их полным списком.
Одно предостережение: ArrayList может содержать только объекты (например, целые числа), но не примитивы (например, целые числа). В БОЛЬШИНСТВЕ случаев автобоксинг / автоответчик позаботятся об этом незаметно, но вы можете получить странное поведение в зависимости от того, что вы делаете.
int[] array = new int[size];
size
- переменная, но длина массива должна быть фиксированной, я прав? @Lord Torgamussize
по ходу выполнения программы; он получает любой размер,size
когда эта строка выполняется.null
в конце. Есть идеи, почему?Массивы в Java имеют фиксированный размер. Вам понадобится ArrayList, одна из ряда чрезвычайно ценных коллекций, доступных в Java.
Вместо того
ты используешь
Затем, чтобы изменить список, который вы используете,
ints.add(y)
иints.remove(z)
многие другие удобные методы, которые вы можете найти в соответствующих Javadocs.Я настоятельно рекомендую изучить классы коллекций, доступные в Java, поскольку они очень мощные и дают вам множество встроенных функций, которые новички в Java, как правило, пытаются без необходимости переписывать.
источник
List<Integer>
вместоArrayList<Integer>
?После создания массивы имеют фиксированный размер. Вместо этого вы можете использовать список.
Autoboxing делает список пригодным для использования, подобным массиву, вы можете поместить в него просто int-значения:
источник
Я не согласен с предложением предыдущих ответов
ArrayList
, потому чтоArrayList
это не динамический массив, а список, поддерживаемый массивом. Разница в том, что нельзя делать следующее:Это даст вам исключение IndexOutOfBoundsException, потому что в этой позиции еще нет элемента, хотя резервный массив допускает такое добавление. Поэтому вам нужно использовать настраиваемую реализацию расширяемого массива, например, предложенную @ randy-lance
источник
Источник: Как сделать динамический массив
источник
Рекомендуется использовать List для работы с небольшими масштабами.
Если у вас огромное количество чисел, НИКОГДА не используйте List и autoboxing,
Список <Целое число> список
Для каждого отдельного int автоматически создается новое целое число. Вы обнаружите, что при увеличении размера списка он замедляется. Эти целые числа являются ненужными объектами. В этом случае лучше использовать примерный размер,
источник
Как насчет использования
List
вместо этого? Например,ArrayList<integer>
источник
Вы не можете изменить размер массива. Однако вы можете создать новый массив нужного размера и скопировать данные из старого массива в новый.
Но лучший вариант - использовать IntList из jacarta commons. ( здесь )
Он работает так же, как List, но занимает меньше места и более эффективен, чем это, потому что он хранит int вместо хранения объектов оболочки над int (что такое класс Integer).
источник
Я ответил на этот вопрос, и нет, вам не нужен Arraylist или что-то еще, это было задание, и я выполнил его, поэтому да, массивы могут увеличиваться в размере. Вот ссылка Как использовать динамический массив Java, а вот ссылка на мой вопрос, на который я ответил динамические массивы Java
источник