Как заполнять массивы в Java?


84

Я знаю, как это сделать, но могу поклясться, что вы можете заполнить его как [0] = {0,0,0,0}; Как ты это делаешь? Я попробовал Google, но ничего полезного не получил.


1
Настоящий вопрос, который вы должны задать, - как это сделать: a [0] = someFunction (4, 0) ;. По этой причине выбранный «правильный» ответ бесполезен.
HoldOffHunger

Ответы:


63

Вы также можете сделать это как часть объявления:

int[] a = new int[] {0, 0, 0, 0};

11
int [] a = new int [4] выполнит то же самое, поскольку 0 - значение по умолчанию.
Zach Scrivena

5
Или int [] a = {0, 0, 0, 0}; . Новый int [] нужен только в том случае, если константа не используется сразу в объявлении.
звездно-голубой

4
это бесполезно, если у вас большой массив. Ответ @cdmckay лучше.
Фелипе Леао

Не забывайте старое правило программирования: «Если вы обнаружите, что копируете / вставляете код, вы делаете что-то не так». Число нулей или любое другое значение по умолчанию просто копируется и вставляется сюда.
HoldOffHunger

264

Ознакомьтесь с методами Arrays.fill .

int[] array = new int[4];
Arrays.fill(array, 0);

21
+1 потому что я не знал о методе Arrays.fill (). Я всегда делал это с помощью цикла for. : D
Spoike

8
@GrantGalitz Я на самом деле не уверен в этом, у вас есть ссылка на статью или smt? Потому что, в отличие от Systemклассов, java.util.Arraysэто класс, реализованный Java, и просмотр исходного кода показывает, что он ничем не отличается от обычного цикла.
Pacerier

7
Массивы int инициализируются 0, поэтому вторая строка в приведенном выше примере не нужна.
Патрик Бринич-Ланглуа

6
@ PatrickBrinich-Langlois: Возможно, стоит указать на ваше намерение обнулить его.
cdmckay

16

Arrays.fill(). Метод перегружен для разных типов данных, и есть даже вариант, который заполняет только указанный диапазон индексов.


16

В Java-8 вы можете использовать IntStreamдля создания потока чисел, который вы хотите повторить, а затем преобразовать его в массив. Этот подход создает выражение, подходящее для использования в инициализаторе:

int[] data = IntStream.generate(() -> value).limit(size).toArray();

Выше sizeиvalue представлены выражения, которые производят количество элементов, которые вы хотите повторить, и повторяемое значение.

Демо.


10
Arrays.fill(arrayName,value);

в java

int arrnum[] ={5,6,9,2,10};
for(int i=0;i<arrnum.length;i++){
  System.out.println(arrnum[i]+" ");
}
Arrays.fill(arrnum,0);
for(int i=0;i<arrnum.length;i++){
  System.out.println(arrnum[i]+" ");
}

Вывод

5 6 9 2 10
0 0 0 0 0

5

Массив можно инициализировать с помощью new Object {}синтаксиса.

Например, массив Stringможет быть объявлен либо:

String[] s = new String[] {"One", "Two", "Three"};
String[] s2 = {"One", "Two", "Three"};

Примитивы также можно инициализировать аналогичным образом:

int[] i = new int[] {1, 2, 3};
int[] i2 = {1, 2, 3};

Или массив некоторых Object:

Point[] p = new Point[] {new Point(1, 1), new Point(2, 2)};

Все подробности о массивах в Java описаны в главе 10 «Массивы» в спецификации языка Java, третье издание .


2

При создании элементы массива в Java инициализируются значениями по умолчанию. Для чисел это означает, что они инициализированы до 0, для ссылок они равны нулю, а для логических значений они ложны.

Чтобы заполнить массив чем-то еще, вы можете использовать Arrays.fill () или как часть объявления

int[] a = new int[] {0, 0, 0, 0};

В Java нет ярлыков для заполнения массивов арифметическими рядами, как в некоторых языках сценариев.


-3
int[] a = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};

10
Добро пожаловать на сайт! Этот ответ можно было бы улучшить, если бы вы могли добавить ему какое-то объяснение, а не просто сбрасывать код. Почему это было бы предпочтительнее любого из других ответов, уже предоставленных на этот вопрос семилетней давности?
Mogsdad 02
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.