时间:2021-05-20
在最短路径问题上遇到了一个问题,对于二维int数组 map[][],需要初始化为int的最大值,不想用双重循环赋初值,想用Arrays.fill()填充但是失败了。。。。。。
首先说明,Arrays.fill()并不能提高赋值的效率,在函数的内部也是用for循环的方式 实现的。
fill()函数源码:
由此可见fill()函数只能填充一维数组,如果这样用,肯定会失败的。
int[][] map=new int[4][5];Arrays.fill(map,-1);//失败但是可以换一种方法实现,二维数组其实就是一维数组的数组,即,它本身只是一个一维数组,但是数组中的每个变量也是一个一维数组。
所以既然它是一维数组,就可以用对应类型的变量来填充它,即用一个一维数组来填充它:
int[][] map=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[][] map=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}
多谢指正,并不能用以上方法给二维数组赋值,因为map的每一项指向的都是同一个一维数组ten。修改一个会影响其他地址的值 ,修改map[0][1] = 100 ,则 map[1][1] map[2][1]等都是100.
到此这篇关于Java用Arrays.fill()初始化二维数组的实现的文章就介绍到这了,更多相关Java 初始化二维数组内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
Java二维数组Java语言中提供的数组是用来存储固定大小的同类型元素。1.二维数组初始化和声明数组变量的声明,和创建数组可以用一条语句完成,如下所示:inta
一维数组1.numpy初始化一维数组a=np.array([1,2,3]);printa.shape输出的值应该为(3,)二维数组2.numpy初始化二维数组a
引言之前,刷Leetcode的时候,有些题需要初始化二维数组,而一维数组的初始化,比如:vara=[5]int{1,2,3,4,5}//用varb:=[5]in
昨天看视频之后,整理思路,自己完成了简易版消灭星星思路:模块1:初始化初始化总分数、当前分数、背景图、选择的星星分数初始化星星(生成二维数组,对二维数组的每一个
今天我们要开始来讲讲Java中的数组,包括一维数组和二维数组的静态初始化和动态初始化数组概述:数组可以看成是多个相同类型数据的组合,对这些数据的统一管理;数组变