数组

数组

image-20220803153218511

  1. int[] array = new int[10];申明创建数组

  2. array[0] = 1 ;给数组赋值

  3. 默认初始化值为0

  4. 静态初始化:创建+赋值:int[] a = {1,2,3};

  5. 动态初始化:包含默认初始化:int[] b = new int[10];

b[0] =1;

数组边界

  • 下标的合法区间是[0,length-1]

  • 数组是 相同的数据类型 的有序集合

  • 数组是对象,数组元素相当于对象的成员变量

  • 数组的长度是确定的,不可变的,越界则报错:ArrayIndexOutofBounds

数组的使用

数组的反转
   public class Demo02 {
   public static void main(String[] args) {
       int[] arrays = {1,2,3,4,5};
       int[] reverse = reverse(arrays);
       printArray(reverse);
  }


//数组作为返回值,反转数组
   public  static int[] reverse(int[] arrays){
       int[] result = new int[arrays.length];
       for (int i = 0,j =result.length-1; i < arrays.length; i++,j--) {
           result[j] = arrays[i];
      }
       return result;
  }



//数组作为方法入参,打印遍历数组
   public static void  printArray(int[] arrays){
       for (int i = 0; i < arrays.length; i++) {
           System.out.println(arrays[i]);
      }
  }
}

多维数组

image-20220803163430978

遍历二维数组

  int[][] array = {{1,2},{3,4},{5,6}};
      // printArray(array[0]);
       for (int i = 0; i < array.length; i++) {
           for (int j = 0; j < array[i].length; j++) {
               System.out.println(array[i][j]);
          }
      }

Arrays 类

  • 常用功能

    • 给数组赋值:fill方法

    • 给数组排序:sort方法,升序

    • 比较数组:equals方法比较数组中元素是否相等

    • 查找元素:binarySearch方法对排序好的数组进行二分查找法操作

稀疏数组

案例

package array;

public class Demo05 {
   public static void main(String[] args) {
       int[][] array1 = new int[11][11];
       array1[1][2] = 1;
       array1[2][3] = 2;
       //输出原始数组
       System.out.println("输出原始数组");
       for (int[] ints : array1) {
           for (int anInt: ints ) {
               System.out.print(anInt+"\t");
          }
           System.out.println();
      }
       //转换为稀疏数组
       int sum = 0;//获取有效值的个数
       for (int i = 0; i < 11; i++) {
           for (int j = 0; j < 11; j++) {
               if (array1[i][j] != 0){
                   sum++;
              }
          }
      }
       System.out.println("有效值的个数"+ sum);

       //创建一个稀疏数组
       int[][] array2 = new int[sum+1][3];
       array2[0][0] =11;
       array2[0][1] =11;
       array2[0][2] =sum;

       //遍历二维数组,存放非0值到稀疏数组中
       int count = 0;
       for (int i = 0; i < array1.length; i++) {
           for (int j = 0; j < array1[i].length; j++) {
               if (array1[i][j] != 0){
                   count++;
                   array2[count][0] = i;
                   array2[count][1] = j;
                   array2[count][2] = array1[i][j];

              }

          }

      }
       //输出稀疏数组
       System.out.println("稀疏数组");
       for (int i = 0; i < array2.length; i++) {
           System.out.println(array2[i][0]+"\t"
                           +array2[i][1]+"\t"
                           +array2[i][2]+"\t");
      }
       //还原
       System.out.println("还原");
       //读取稀疏数组
       int[][] array3 = new int[array2[0][0]][array2[0][1]];
       for (int i = 1; i < array2.length; i++) {
           array3[array2[i][0]][array2[i][1]] = array2[i][2];
      }
       System.out.println("输出还原数组");
       for (int[] ints : array3) {
           for (int anInt: ints ) {
               System.out.print(anInt+"\t");
          }
           System.out.println();
      }
  }
}

用坐标来找对应的值

  1. [array2[i] [0] ] [array2 [i] [1]横纵坐标

  2. array2 [i] [2] 对应的值

  3. array2 [count] [0] = i;//第几行 第一个元素是(第几行) array2 [count] [1] = j;第几行,第二个元素是(第几列)array2 [count] [2] = array1 [i] [j]第几行,第三个元素(是什么)

posted @ 2022-08-04 09:38  小新新Blog  阅读(92)  评论(0)    收藏  举报