Java用Arrays.fill()初始化二维数组的实现

 更新时间:2021年01月21日 10:21:23   作者:空持百千偈  
这篇文章主要介绍了Java用Arrays.fill()初始化二维数组的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

在最短路径问题上遇到了一个问题,对于二维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[][] 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 初始化二维数组内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:

相关文章

  • SWT(JFace)体验之FillLayout布局

    SWT(JFace)体验之FillLayout布局

    FillLayout是非常简单的一种布局方式,它会以同样大小对父组件中的子组件进行布局,这些子组件将以一行或一列的形式排列。
    2009-06-06
  • 很详细的Log4j配置步骤

    很详细的Log4j配置步骤

    Log4J的配置文件(Configuration File)就是用来设置记录器的级别、存放器和布局的,它可接key=value格式的设置或xml格式的设置信息。通过配置,可以创建出Log4J的运行环境。
    2008-11-11
  • Spring定时任务注解@Scheduled详解

    Spring定时任务注解@Scheduled详解

    这篇文章主要介绍了Spring定时任务注解@Scheduled详解,@Scheduled注解是包org.springframework.scheduling.annotation中的一个注解,主要是用来开启定时任务,本文提供了部分实现代码与思路,需要的朋友可以参考下
    2023-09-09
  • Java8新特性之重复注解(repeating annotations)浅析

    Java8新特性之重复注解(repeating annotations)浅析

    这篇文章主要介绍了Java8新特性之重复注解(repeating annotations)浅析,这个新特性只是修改了程序的可读性,是比较小的一个改动,需要的朋友可以参考下
    2014-06-06
  • 基于springmvc之常用注解,操作传入参数

    基于springmvc之常用注解,操作传入参数

    这篇文章主要介绍了springmvc之常用注解,操作传入参数方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-09-09
  • Java如何获取字符串单词个数

    Java如何获取字符串单词个数

    这篇文章主要介绍了Java如何获取字符串单词个数问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03
  • 深入理解Java高级特性——注解

    深入理解Java高级特性——注解

    这篇文章主要介绍了Java高级特性——注解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-03-03
  • JavaBean和Map转换封装类的方法

    JavaBean和Map转换封装类的方法

    下面小编就为大家带来一篇JavaBean和Map转换封装类的方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-10-10
  • 全面解析@InsertProvider执行原理

    全面解析@InsertProvider执行原理

    这篇文章主要介绍了全面解析@InsertProvider执行原理,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-07-07
  • SpringBoot使用自定义注解实现权限拦截的示例

    SpringBoot使用自定义注解实现权限拦截的示例

    本篇文章主要介绍了SpringBoot使用自定义注解实现权限拦截的示例,具有一定的参考价值,有兴趣的可以了解一下
    2017-09-09

最新评论