分享

数组

 印度阿三17 2020-05-17

数组

数组概述

什么是数组? 数组是【相同类型数据】的有序集合

数组声明和创建方式

有三种创建方式

  1. 静态初始化 int[] a = {1,2,3,4,5};

  2. 动态初始化 int[] b = new int[5]; b[0] = 1; b[1] = 2;

  3. 默认初始化 数组是引用类型,它的元素下相当于类的实例变量

,因此一经分配空间,其中每个元素也按照实例变量同样的方式

被隐式的初始化。

数组的边界

下标合法区域 [0,lenth-1] 常见的异常 数组下标越界异常

ArrayIndexOutOfBoundsException

数组长度

数组有个属性 length 数组.length 就是数组的长度

数组使用

1 数组的遍历 for(int i = 0 ; i<array.lenth; i ) {System.out.println(array[i]);}

​ 增强for for(int x :arrays){

​ System.out.println(array[i]);

​ }

2 数组内的元素访问 通过下标索引来访问数组元素 array[i]

3 数组可以作为参数传入方法 也可以作为方法返回值

多维数组

多维数组 就是 数组的数组

数组的元素还是数组,

数组是一种数组结构 同时也是引用类型 是个对象 这也是为什么通常

没有三维甚至多维数组的使用场景的原因。

Arrays工具类

Arrays 工具类 都是操作数组的 【静态方法】

常用 :

  1. toString() 打印数组

  2. sort() 升序拍序

  3. fill() 给数组元素赋值;

  4. equals 比较数组元素是否匹配;

冒泡排序

冒泡排序是非常简单的排序方法 江湖人尽皆知

用嵌套for循环 外层循环来控制冒泡轮数 ,内层来依次比较

废话不多说撸代码

public static void main(String[] args){
    //创建一个中间临时变量来交换数据
    int  temp = 0;
    int[] a = {423 ,232 ,1 23,424};
   
    //外层控制冒泡轮数  2个数 2个数比较几次
    for(int i = 0 ;  i < a.length-1; i  ){
         boolean flag = false ;
        //内层2个数依次比较
        for(int j = 0 ; j<a.length-1-i; j  ){
            if(a[j]>a[j 1]){
                temp = a[j 1];
                a[j 1] = a[j];
                a[j] = temp ;
                flag = true;
                
            }
            if(flag==false){
                break;
            }
        }
        System.out.println(Arrays.toString(a));
    }
    
    
}

稀疏数组

1 使用目的 : 压缩数据空间

2 使用场景:当一个数组大多数元素为0 或者为【同一元素】时,可以

使用稀疏数组来保存该数据

稀疏数组本身是一个数据结构

0 0 0 0 0 0

0 1 0 0 0 0

0 0 2 0 0 0

0 0 0 0 0 0

上面这个 2维数组 转化成 稀疏数组的样子为

​ 行 列 有效值个数

[0] 4 6 2

[1] 1 1 1

[2] 2 2 2

上一个示例代码

package com.niu.www.array;

public class ArrayDemo03 {
    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();
        }
        System.out.println("===========================================");
        //转换稀疏数组保存
        //获取有效值个数
        int sum = 0;
        for (int i = 0; i <array1.length ; i  ) {
            for (int j = 0; j <array1[i].length ; j  ) {
                if (array1[i][j]!=0){
                    sum  ;
                }

            }

        }
        System.out.println("有效值个数是:" sum);
        //输出稀疏数组
        //创建一个稀疏数组结构
        // 行和列都是固定的  行是 有效值 1  列就是固定的3列
        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]);
        }
        System.out.println("=========================");
        System.out.println("还原稀疏数组");
        //创建 新数组来接收 还原的稀疏数组  , 代码就是容器 和信息 的转换和传递
        int[][] array3 = new int[array2[0][0]][array2[0][1]];
        for (int i = 1; i <array2.length ; i  ) {
            //遍历稀疏数组array2 把有效值赋值给 array3
            array3[array2[i][0]][array2[i][1]] = array2[i][2];



        }
        //输出还原后的稀疏数组
        for (int[] ints : array3) {
            for (int anInt : ints) {
                System.out.print(anInt "\t");
            }
            System.out.println();
        }

    }
}

数组的四个基本特点

  1. 定长 一旦创建 长度不可改变
  2. 必须是相同类型元素
  3. 数组元素可以是任意类型元素
  4. 数组是引用类型 数组对象本身是存储在堆中
来源:https://www./content-4-695551.html

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多