如何在Java中初始化数组中的所有整数?

Posted

技术标签:

【中文标题】如何在Java中初始化数组中的所有整数?【英文标题】:How to initialize all integers in an array in Java? 【发布时间】:2011-03-23 01:26:20 【问题描述】:

Java 中是否有预定义函数可以将数组中的所有整数设置为指定值?

假设给定以下数组:byte start[][][] = new byte[MAXSUM][rows][N * 2]; 除了0 之外,有没有比3 loops 更好的方法将其初始化为某个常量?

Arrays.fill() 可以用来初始化多维数组中的值吗?

【问题讨论】:

【参考方案1】:

不,没有内置的,但是使用嵌套的 for 循环应该不会很难看。

public static void multiDimensionalFill(byte[][][] start, byte value) 
    for(byte[][] firstdim : start)
        for(byte[] seconddim : firstdim)
            Arrays.fill(seconddim, value);

【讨论】:

与 C/C++ memset(start, -1, sizeof(start)) one-liner 相比,它确实看起来很麻烦...... @Leonid 不幸的是,Java 不是 C 或 C++,您无权访问数组引用的低级内存。但是,您可以在项目中简单地创建一些静态实用程序方法,然后在需要初始化某些内容时简单地调用multiDimensionalFill - 问题解决了。 好吧,没有人阻止您使用一维数组,只需调用 Arrays.fill 并在每次访问时进行从 1 维到 n 维的转换。那是用一个更大但会“工作”的小鱼来交换一个小小的不便;) 您知道 Java 库不提供此功能的原因吗?尤其是对于简单的类型,它会非常有用,也许可以编写更高效的库实现。【参考方案2】:

除了循环遍历值之外,没有更好的内置方法来初始化多维数组。

【讨论】:

【参考方案3】:

Arrays.fill() 仅适用于一维数组

【讨论】:

以上是关于如何在Java中初始化数组中的所有整数?的主要内容,如果未能解决你的问题,请参考以下文章

如何在Java中初始化一个对象数组

Java中的可变长度(动态)数组

数组转化为整数的方法

如何简单地初始化前十个整数的数组? [复制]

JAVA 中的数组的定义和使用

数据初始化