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.
Arrays.fill(arr, UN);
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.
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.
No.
Next question?
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.
精彩评论