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.
Well, in the case of objects (or primitives with autoboxing) you can do the following:
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.
You don't need to initialize them with
0
. Anint
defaults to0
already.Just
is enough. It gives you an array of zeroes of the given length. If it were an
Integer[]
, it would have been an array ofnull
s.No.
Next question?
Oops, read your question better:
You can init an array like so
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.
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.