如何在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中初始化数组中的所有整数?的主要内容,如果未能解决你的问题,请参考以下文章