Як заповнити масиви на Java?


83

Я знаю, як це зробити нормально, але я міг би поклястись, що ви можете заповнити як [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 - значення за замовчуванням.
Зак Скривена

5
Або int [] a = {0, 0, 0, 0}; . Вам потрібен новий int [], якщо константа не використовується відразу в оголошенні.
starblue

4
це не корисно, коли у вас великий масив. Відповідь @ cdmckay краща.
Феліпе Леао

Не забувайте вікове правило програмування: "Якщо ви виявили, що копіюєте / вставляєте код, ви робите щось не так". Число нулів або будь-яке значення за замовчуванням просто копіюється і вставляється сюди.
HoldOffHunger

262

Перевірте методи 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
Масиви ints ініціалізуються з 0, тому другий рядок не потрібен у наведеному вище прикладі.
Патрік Брініх-Ланглуа

6
@ Патрік Брініч-Ланглуа: Це все ж може бути корисним для того, щоб вказати на ваш намір, щоб він був обнулений.
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
Ласкаво просимо на сайт! Цю відповідь було б покращено, якби ви могли додати якесь пояснення до неї, а не просто скрутити якийсь код. Чому це було б кращим від будь-якої іншої відповіді, вже наданої на це 7-річне питання?
Могсдад
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.