开发者

Can I declare and initialize an array with the same instruction in Java?

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 nulls.


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.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜