Java 的Arrays.fii()用法

二维数组map[][]的初始化为某一个相同的值,除了用双重循环赋初值,还可以用Arrays.fill()填充

Tips: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);//失败

但是,换位思考,其实二维数组,就是一维数组嵌套着多个一维数组而已,即一维数组中的每个元素都是一维数组。

既然这是一维数组,那我们可以使用以下方法进行赋初值。

import java.util.Arrays;
import java.util.stream.Stream;

public class Test {
    public static void main(String[] args) {
        int[][] map=new int[4][5];
        int[] ten=new int[10];          //[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
        System.out.println(Arrays.toString(ten));
        Arrays.fill(ten, -1);          // [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1]
        Arrays.fill(map,ten);          //成功
 
//将ten这个一维数组赋值给二维数组map后,map的列数由原来的 5 ==>  ten.length 即 10 


//   打印二维数组
        System.out.println(Arrays.toString(ten));
        for (int[] array : map) {
            for (int i : array) {
                System.out.print(i + "  ");
            }
            System.out.println();
        }
              /*-1  -1  -1  -1  -1  -1  -1  -1  -1  -1 
                -1  -1  -1  -1  -1  -1  -1  -1  -1  -1
                -1  -1  -1  -1  -1  -1  -1  -1  -1  -1
                -1  -1  -1  -1  -1  -1  -1  -1  -1  -1*/


//        第二种打印数组的方法
       Arrays.stream(map).flatMap(c -> Stream.of(c)).map(c -> Arrays.toString(c))
           .forEach(System.out::println);
        
    }
}

一维数组  ten  也可以是变值

import java.util.Arrays;
import java.util.stream.Stream;

public class Test {
    public static void main(String[] args) {
        int[][] map=new int[4][5];
        int[] ten={1,2,6,3,6,1,7};
        Arrays.fill(map,ten);  //成功

      /*1  2  6  3  6  1  7
        1  2  6  3  6  1  7
        1  2  6  3  6  1  7
        1  2  6  3  6  1  7*/
    }
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值