首页 > 编程知识 正文

java 二维数组,java二维数组初始化赋值

时间:2023-05-05 18:16:18 阅读:146636 作者:3586

最短路径问题出了问题。 对于二维int数组map[][],必须将其初始化为int的最大值。 我不想在双重循环中分配初始值。 Arrays.fill ) )我想填补,但是失败了。

首先,Arrays.fill ()并不提高赋值的效率,它在函数内部也是通过for循环实现的。

fill ) )函数的源代码:

publicstaticvoidfill(object[]a,Object val ) {

for(intI=0,len=a.length; i len; I )

a[i]=val;

}

由此可见,fill (函数只能填充一维数组。 这样使用的话,会失败的吧。

int [ ] [ ]映射=new int [4] [5];

Arrays.fill(map,-1); //失败

但是,可以用别的方法实现。 二维数组实际上是一维数组的数组。 也就是说,它本身只是一维数组,但数组中的每个变量也是一维数组。

因此,这是一维数组,可以用相应类型的变量填充。 也就是说,可以用一维数组填充。

int [ ] [ ]映射=new int [4] [5];

int[] ten=new int[10];

Arrays.fill(ten,-1);

Arrays.fill(map,ten ); //成功

值得注意的是,一旦将ten填充到map中,该map声明时的“5”将无济于事,每个map[i]将等于ten。

二维数组填充成功,但感觉问题更复杂,可能不比直接在for循环中实现更简单。

但是,在以下情况下,仍然很实用。

int [ ] [ ]映射=new int [4] [5];

int [ ] ten={ 1,2,6,3,6,1,7 };

Arrays.fill(map,ten );

如果ten的值不恒定且不规则,则可以用Arrays.fill ) )填充二维数组,使每行都为{1、2、6、3、6、1、7}

感谢您的指出。 由于贴图中的每个项目都指向同一一维数组ten,因此无法使用上述方法为二维数组赋值。 如果修改影响其他地址的值并修改map[0][1]=100,则map[1][1] map[2][1]等将变为100。

到目前为止,我们已经介绍了Java使用Arrays.fill )初始化二维数组的实现。 有关更多相关Java初始化二维数组的信息,请搜索以前的文章或继续查看下面的相关文章。 今后也请多多关照。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。