• Java数组


    Java 数组

    1、简介

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

    变量:一个盒子,点

    一维:一行盒子,线

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

    2、数组创建

    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};
    

    3、内存分析

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

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

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

    4、多维数组

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

    5、Arrays类

    常用方法

    • toString 将数组转换成String类型输出
    • fill 填充
    • sort 排序

    6、应用

    6.1、冒泡排序

    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;
    }
    

    6.2、稀疏数组

    例如:五子棋盘,空的时候有很多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]));
            }
        }
    
  • 相关阅读:
    书单
    树莓派与 NATAPP 实现内网穿透
    WinForm分辨率适应-高DPI自动缩放
    ElasticSearch学习——搜索技术基础知识(上)
    JavaSE学习笔记-基础
    JavaSE学习笔记-第一个Java程序
    JavaSE学习笔记-Java开发环境搭建
    MySQL学习笔记-增删改查
    MySQL学习笔记-函数
    MySQL学习笔记-查询
  • 原文地址:https://www.cnblogs.com/gbhh/p/13675109.html
Copyright © 2020-2023  润新知