Мне было интересно, как инициализировать целочисленный массив таким образом, чтобы его размер и значения менялись в результате выполнения моей программы, каких-либо предложений?
Массивы переменной длины (динамические) в Java
Ответ 1
Да: используйте ArrayList.
В Java "обычные" массивы имеют фиксированный размер. Вы должны дать им размер и не можете расширять их или сжимать. Чтобы изменить размер, вам нужно создать новый массив и скопировать нужные данные - что неэффективно и боль для вас.
К счастью, существуют всевозможные встроенные классы, которые реализуют общие структуры данных и другие полезные инструменты. Вы хотите проверить API Java 6 для их полного списка.
Одна оговорка: ArrayList может содержать только объекты (например, целые числа), а не примитивы (например, ints). В случаях MOST autoboxing/autounboxing позаботится об этом для вас тихо, но вы можете получить какое-то странное поведение в зависимости от того, что вы делаете.
Ответ 2
Массивы на Java имеют фиксированный размер. Вам понадобится ArrayList, один из нескольких чрезвычайно ценных коллекций, доступных на Java.
Вместо
Integer[] ints = new Integer[x]
вы используете
List<Integer> ints = new ArrayList<Integer>();
Затем, чтобы изменить список, вы используете ints.add(y)
и ints.remove(z)
среди многих других удобных методов, которые вы можете найти в соответствующих Javadocs.
Я настоятельно рекомендую изучать классы Collections, доступные на Java, поскольку они очень эффективны и дают вам множество встроенных функций, которые Java-новички склонны пытаться переписать без необходимости.
Ответ 3
Массивы фиксированного размера после создания экземпляра. Вместо этого вы можете использовать Список.
Autoboxing позволяет использовать List, похожий на массив, вы можете вставлять в него просто int-значения:
List<Integer> list = new ArrayList<Integer>();
list.add(1);
list.add(2);
list.add(3);
Ответ 4
Я не согласен с предыдущими ответами, предлагая ArrayList
, потому что ArrayList
не динамический массив, но список, поддерживаемый массивом. Разница в том, что вы не можете сделать следующее:
ArrayList list = new ArrayList(4);
list.put(3,"Test");
Это даст вам исключение IndexOutOfBoundsException, потому что в этой позиции нет элемента, даже несмотря на то, что массив поддержки разрешает такое добавление. Таким образом, вам нужно использовать настраиваемую расширяемую реализацию массива, например, предложенную @randy-lance
Ответ 5
-
Рекомендуется использовать List для работы с малым размером.
-
Если у вас огромное количество чисел, НИКОГДА используйте список и автобоксинг,
Список < Целое > список
Для каждого отдельного int автоматически создается новое целое число. При увеличении размера списка вы обнаружите, что он замедляется. Эти целые числа являются ненужными объектами. В этом случае лучше использовать расчетный размер,
int[] array = new int[ESTIMATED_SIZE];
Ответ 6
Simple code for dynamic array. In below code then array will become full of size we copy all element to new double size array(variable size array).sample code is below
public class DynamicArray {
static int []increaseSizeOfArray(int []arr){
int []brr=new int[(arr.length*2)];
for (int i = 0; i < arr.length; i++) {
brr[i]=arr[i];
}
return brr;
}
public static void main(String[] args) {
int []arr=new int[5];
for (int i = 0; i < 11; i++) {
if (i<arr.length) {
arr[i]=i+100;
}
else {
arr=increaseSizeOfArray(arr);
arr[i]=i+100;
}
}
for (int i = 0; i < arr.length; i++) {
System.out.println("arr="+arr[i]);
}
}
}
Источник: Как создать динамический массив
Ответ 7
Вы не можете изменить размер массива. Однако вы можете создать новый массив с нужным размером и скопировать данные из старого массива в новый.
Но ваш лучший вариант - использовать IntList из jacarta commons. (здесь)
Он работает так же, как и List, но занимает меньше места и более эффективен, потому что он хранит int вместо хранения объектов-оболочек по int (что класс Integer).
Ответ 8
Как насчет использования List
вместо этого? Например, ArrayList<integer>
Ответ 9
Я ответил на этот вопрос, и вам не нужен аррайалист или какая-либо другая вещь, это было задание, и я закончил его, поэтому да массивов может увеличиться в размере. Ссылка здесь Как использовать динамический массив Java и вот ссылка на мой вопрос, который я ответил Динамические массивы Java