Есть ли способ сделать следующее одновременно?
static final int UN = 0; // uninitialized nodes int[] arr; // ... code ... arr = new int[size]; for (int i = 0; i < 5; i++) { arr[i] = UN; }
По сути, я хочу объявить arr, как только я знаю, каков будет его размер, и инициализировать его как UN без необходимости зацикливания. Вот как то так:
arr
UN
int[] arr = new int[size] = UN;
Возможно ли это?
Спасибо.
Arrays.fill(arr, UN);
Ну, в случае объектов (или примитивов с автобоксом) вы можете сделать следующее:
int count = 20; final int UN = 0; Integer[] values = Collections.nCopies(count, UN).toArray(new Integer[count]);
Недостатком является то, что вы должны использовать объектные формы примитивов (поскольку коллекции должны быть объектами), и отдельный список будет создан, а затем отброшен. Это позволит вам создать массив как один оператор.
Вам не нужно инициализировать их с 0. int по умолчанию уже 0.
0
int
Просто
int[] array = new int[size];
достаточно. Это дает вам массив нулей заданной длины. Если бы это был Integer[], это был бы массив null с.
Integer[]
null
Нет, не со стандартными библиотеками.Однако, если вы пишете свои собственные функции, вы можете легко сделать это в одном выражении (не в инструкции; это разные).Моя выглядит как String[][] strings = Arrayu.fill(new String[x][y], "");
String[][] strings = Arrayu.fill(new String[x][y], "");
Вот ссылка .Там тоже есть немного хлама;Я только что опубликовал копию текущего источника напрямую, без очистки.
int arr[] = { 0, 0, 0, 0, 0 };
Нет.
Следующий вопрос?
Упс, прочитайте ваш вопрос лучше:
Вы можете создать массив следующим образом:
int[] arr = new int[] {UN, UN, UN, UN, UN};
Но, конечно, если вы не знаете размер во время компиляции, тогдачтобы сделать цикл.Вторая техника невозможна.