国内网站速度慢,wordpress cenos,网络服务器忙3008,百度云盘登录入口在最短路径问题上遇到了一个问题#xff0c;对于二维int数组 map[][],需要初始化为int的最大值#xff0c;不想用双重循环赋初值#xff0c;想用Arrays.fill()填充但是失败了。。。。。。首先说明#xff0c;Arrays.fill()并不能提高赋值的效率#xff0c;在函数的内部也是…在最短路径问题上遇到了一个问题对于二维int数组 map[][],需要初始化为int的最大值不想用双重循环赋初值想用Arrays.fill()填充但是失败了。。。。。。首先说明Arrays.fill()并不能提高赋值的效率在函数的内部也是用for循环的方式 实现的。fill()函数源码public static void fill(Object[] a, Object val) {for (int i 0, len a.length; i len; i)a[i] val;}由此可见fill()函数只能填充一维数组如果这样用肯定会失败的。int[][] mapnew int[4][5];Arrays.fill(map,-1);//失败但是可以换一种方法实现二维数组其实就是一维数组的数组即它本身只是一个一维数组但是数组中的每个变量也是一个一维数组。所以既然它是一维数组就可以用对应类型的变量来填充它即用一个一维数组来填充它int[][] mapnew int[4][5];int[] tennew int[10];Arrays.fill(ten, -1);Arrays.fill(map,ten); //成功这里值得注意的是一旦用ten填充了map,那map声明时候的“5”将起不到任何作用,每个map[i]都将等于ten。虽然成功填充了二维数组但是感觉好像把问题变得更复杂了可能并不如直接用for循环实现简单。不过在下面这种情况下还是很实用的int[][] mapnew int[4][5];int[] ten{1,2,6,3,6,1,7};Arrays.fill(map,ten);当ten中的数值不固定也不一定有规律时可以用Arrays.fill()来填充二维数组使其每一行都是1263617多谢指正并不能用以上方法给二维数组赋值因为map的每一项指向的都是同一个一维数组ten。修改一个会影响其他地址的值 修改map[0][1] 100 ,则 map[1][1] map[2][1]等都是100.到此这篇关于Java用Arrays.fill()初始化二维数组的实现的文章就介绍到这了,更多相关Java 初始化二维数组内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家