Is there a way to do the following at the same time?
static final int UN = 0; // uninitialized nodes
int[] arr;
// ... code ...
arr = new int[size];
for (int i = 0; i < 5; i++) {
arr[i] = UN;
}
Basically, I want to declare arr
once I know what its size will be and initialize it to UN
without having to loop. So something like this:
int[] arr = new int[size] = UN;
Is this possible?
Thanks.
No, not with the standard libraries. If you write your own functions, though, you can easily do so in a single statement (not instruction; those are different). Mine looks like String[][] strings = Arrayu.fill(new String[x][y], "");
Here's a link. There's some junk in there too, though; I just posted a copy of the current source directly without cleaning it up.
You don't need to initialize them with 0
. An int
defaults to 0
already.
Just
int[] array = new int[size];
is enough. It gives you an array of zeroes of the given length. If it were an Integer[]
, it would have been an array of null
s.
Well, in the case of objects (or primitives with autoboxing) you can do the following:
int count = 20;
final int UN = 0;
Integer[] values = Collections.nCopies(count, UN).toArray(new Integer[count]);
The downsides are that you have to use the object forms of the primitives (since the Collections must be of objects) and a separate List will be constructed and then thrown away. This would allow you to create the array as one statement however.
int arr[] = { 0, 0, 0, 0, 0 };
Oops, read your question better:
You can init an array like so
int[] arr = new int[] {UN, UN, UN, UN, UN};
But ofcourse, if you don't know the size at compile time, then you have to do the for loop. The second technique is not possible.