首页 > 编程语言 > 详细

Java数组

时间:2020-09-15 20:53:58      阅读:81      评论:0      收藏:0      [点我收藏+]

数组的定义

把数组当作若干个盒子,能存放东西

变量:一个盒子,点

一维:一行盒子,线

二维:在一维的每个盒子里面,再放一行盒子,面

数组创建

dataType[] arrayRefVar;   //首选
dataType arrayRefVar[];
dataType[] arrayRefVar = new dataType[arraySize];
例:int[] a = {12,23,2,454,234,23441,4,556,5,7,5,4,5,765,2,4,34,78,4};

内存分析

堆:存放new的对象和数组,可以被所有线程共享

栈:存放基本变量类型,引用对象的变量

方法区:可以被所有线程共享,包含了class,static变量

多维数组

int[][] a = new int[4][7]

Arrays类

常用方法

toString 将数组转换成String类型输出

fill 填充

sort 排序

冒泡排序

public static int[] sort(int[] arr){
    //交换变量
    int temp = 0;
    //优化,过滤第一次比较就已经排好序的,即没有交换的
    boolean flag = false;
    for (int i = 0;i < arr.length;i++){
        for (int j = 0;j < arr.length-1-i;j++){
            if(arr[j] > arr[j+1]){
                temp = arr[j];
                arr[j] = arr[j+1];
                arr[j+1] = temp;
                flag = true;
            }
        }
        if(flag==false){
            break;
        }
    }
    return arr;
}

稀疏数组

例如:五子棋盘,空的时候有很多0,避免浪费,采用一个数组记录

稀疏数组:首行记录,棋盘行,列,有效棋子数;其余的全部记录,坐标和值

public static void main(String[] args) {
//        创建棋盘
        int[][] arr1 = new int[11][11];
        arr1[1][2] = 1;
        arr1[2][3] = 2;
        System.out.println("--------棋盘-------");
        for (int i = 0;i < arr1.length;i++){
            System.out.println(Arrays.toString(arr1[i]));
        }
        System.out.println("===============================");

        //记录有效棋子数
        int sum = 0;
        for (int i = 0; i < arr1.length;i++){
            for (int j = 0 ;j < arr1[i].length;j++){
                if(arr1[i][j] != 0){
                    sum++;
                }
            }
        }
        System.out.println("棋子数:"+sum);
        System.out.println("===============================");
        //创建稀疏数组
        int[][] arr3 = new int[sum+1][3];
        arr3[0][0] = 11;
        arr3[0][1] = 11;
        arr3[0][2] = sum;

//        添加棋子坐标
        int count = 0;
        for (int i = 0; i < arr1.length;i++){
            for (int j = 0 ;j < arr1[i].length;j++){
                if(arr1[i][j] != 0){
                    count++;
                    arr3[count][0] = i;
                    arr3[count][1] = j;
                    arr3[count][2] = arr1[i][j];
                }
            }
        }

        System.out.println("------稀疏数组------");
        for (int i = 0;i < arr3.length;i++){
            System.out.println(Arrays.toString(arr3[i]));
        }

        int[][] arr4 = new int[arr3[0][0]][arr3[0][1]];
        for (int i = 1;i < arr3.length;i++){
            arr4[arr3[i][0]][arr3[i][1]] = arr3[i][2];
        }

        System.out.println("------还原棋盘------");
        for (int i = 0;i < arr4.length;i++){
            System.out.println(Arrays.toString(arr4[i]));
        }
    }

Java数组

原文:https://www.cnblogs.com/gbhh/p/13675109.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!