Java基础-04-数组

数组

一.数组的声明与创建

int [] arrys1 = new int[10];
        Scanner scanner = new Scanner(System.in);

        for(int i=0;i<arrys1.length;i++){
            arrys1[i] = scanner.nextInt();
        }
        scanner.close();
        for(int i=0;i<arrys1.length;i++){
            System.out.println(arrys1[i]);
        }

二.三种初始化和内存分析

//静态初始化
        int[] a = {1,2,3};
        //动态初始化 (包含了默认初始化)
        int[] b = new int[10];

image-20210830171658391


三.Arrays类

常用方法:

  • 排序:sort
  • 填充:fill
  • 转为字符串:tostring
  • 判断元素值是否相等:equals
  • 对排序好的数组进行二分查找:binarySearch

四.稀疏数组

//初始化原始数组arry1
        int[][] arry1 = new int[11][11];
        arry1[1][1] = 1;
        arry1[2][1] = 2;
        /*
        0	0	0	0	0	0	0	0	0	0	0
        0	1	0	0	0	0	0	0	0	0	0
        0	2	0	0	0	0	0	0	0	0	0
        0	0	0	0	0	0	0	0	0	0	0
        0	0	0	0	0	0	0	0	0	0	0
        0	0	0	0	0	0	0	0	0	0	0
        0	0	0	0	0	0	0	0	0	0	0
        0	0	0	0	0	0	0	0	0	0	0
        0	0	0	0	0	0	0	0	0	0	0
        0	0	0	0	0	0	0	0	0	0	0
        0	0	0	0	0	0	0	0	0	0	0
         */
        System.out.println("打印原始数组array1");

        //  遍历元素      遍历对象
        for(int[] ints : arry1){
            for(int i : ints){
                System.out.print(i + "\t");
            }
            System.out.println();
        }

        System.out.println("====================");

        System.out.println("压缩数据 将arry1转为稀疏数组");

        //计数有效元素个数
        int count = 0;
        for(int i=0; i < 11; i++){
            for(int j=0; j < 11; j++){
                if(arry1[i][j] != 0)
                    count++;
            }
        }

        System.out.println("有效元素个数为" + count);
        //创建稀疏数组
        //count + 1行;3列、
        //第一行储存原始数组的信息:行数,列数,有效元素个数
        //后面的行储存有效元素的信息:行序号,列序号,值

        //第一行
        int [][] arryXi = new int[count+1][3];
        //行数
        arryXi [0][0] = arry1.length;//调用b.length方法,返回的则是b数组的行数
        //列数
        arryXi [0][1] = arry1[0].length;//b[0].length方法则返回的是0行所代表的长度(即b数组的列数)
        //有效元素个数
        arryXi [0][2] = count;

        //其他行
        int w = 1;
        for(int i=0; i < 11; i++) {
            for (int j = 0; j < 11; j++) {
                if (arry1[i][j] != 0) {
                    //记录有效元素所在 行
                    arryXi[w][0] = i;
                    //记录有效元素所在 列
                    arryXi[w][1] = j;
                    ////记录有效元素的 值
                    arryXi[w][2] = arry1[i][j];

                    w++;
                }
            }
        }

        //输出稀疏数组
        for(int[] ints : arryXi){
            for(int i : ints){
                System.out.print(i + "\t");
            }
            System.out.println();
        }
        /*
        11	11	2	
        1	1	1	
        2	1	2
         */

        System.out.println("====================");

        System.out.println("根据稀疏数组还原原始数据");

        //1.读取稀疏数组
        int[][] arry2 = new int[arryXi[0][0]][arryXi[0][1]];
        //2.还原有效元素的值
        for(int i=1; i < arryXi.length; i++){
            //      行                 列                值
            arry2[  arryXi[i][0]  ][  arryXi[i][1]  ] = arryXi[i][2];
        }

        for(int[] ints : arry2){
            for(int i : ints){
                System.out.print(i + "\t");
            }
            System.out.println();
        }

        /*
        0	0	0	0	0	0	0	0	0	0	0
        0	1	0	0	0	0	0	0	0	0	0
        0	2	0	0	0	0	0	0	0	0	0
        0	0	0	0	0	0	0	0	0	0	0
        0	0	0	0	0	0	0	0	0	0	0
        0	0	0	0	0	0	0	0	0	0	0
        0	0	0	0	0	0	0	0	0	0	0
        0	0	0	0	0	0	0	0	0	0	0
        0	0	0	0	0	0	0	0	0	0	0
        0	0	0	0	0	0	0	0	0	0	0
        0	0	0	0	0	0	0	0	0	0	0
         */

posted @ 2021-08-30 19:53  Cornfield_Chase  阅读(26)  评论(0)    收藏  举报