java 數組詳解

什麼是數組

數組的聲明和建立

public class ArrayDemo01 {
    public static void main(String[] args) {
        int[] nums;  // 1.定義
        nums=new int[10];  // 2.建立一個數組

        // 3.給數組元素賦值
        nums[0]= 1;

        // 獲取數組長度 arrays.length
        System.out.println(nums.length);
    }
}

三種初始化及內存分析

public class ArrayDemo02 {
    public static void main(String[] args) {
        // 靜態初始化  建立+賦值
        int [] a={1,2,3,4,5,6,7,8};

        Man[] men={new Man(),new Man()};

        // 動態初始化:包含默認初始化
        int[]b=new int[10];
        b[0]=10;

    }
}

public class Man {

}

下標越界及小結

數組的使用

``java

public class ArrayDemo03 {
    public static void main(String[] args) {
        int[] arrays={1,2,3,4,5};
        //打印所有數組元素
        for (int i=0;i<arrays.length;i++){
            System.out.println(arrays[i]);
        }
        System.out.println("====================");

        //加強型for循環
        //arrays.for 自動生成加強型for循環
        //JDK1.5,沒有下標,取不到下標
        for (int array : arrays) {
            System.out.println(array);
        }
    }
}

二維數組

Arrays類詳解

public class ArrayDemo04 {
    public static void main(String[] args) {
        int[][]array={{1,2},{3,4},{5,6}};

        int[] a={1,2,3,4,231,15,67,121};
        //打印數組元素
        System.out.println(a);// [I@1b6d3586
        System.out.println(Arrays.toString(a)); // [1, 2, 3, 4, 231, 15, 67, 121]

        Arrays.sort(a);  //數組進行排序
        System.out.println(Arrays.toString(a)); // [1, 2, 3, 4, 15, 67, 121, 231]
    }
}

冒泡排序

import java.util.Arrays;

public class ArrayDemo05 {
    public static void main(String[] args) {
        int[] a={123,6,5432,31,524,9876};
        int []sort=sort(a);
        System.out.println(Arrays.toString(sort));  //[9876, 5432, 524, 123, 31, 6]
    }
    //冒泡排序
    //1. 比較數組中,兩個相鄰的元素,若是前一個比後一個大,就交換兩者位置
    //2. 每一次比較都會產生一個最大或最小的數字
    //3. 下一輪,能夠少一次排序!
    public static int[] sort(int[]array){
        int temp;
        boolean flag =false;  //經過flag標識位減小沒有意義的比較

        //外層循環,判斷要走多少次
        for (int i = 0; i < array.length; i++) {
            for (int j = 0; j < array.length - 1-i; j++) {
                if (array[j+1]>array[j]){
                    temp=array[j];
                    array[j]=array[j+1];
                    array[j+1]=temp;
                    flag=true;
                }
            }
            if (!flag){
                break;
            }
        }
        return array;
    }
}

稀疏數組

import java.util.Arrays;

public class ArrayDemo06 {
    public static void main(String[] args) {
        //1.建立一個二維數組 11*11 0:沒有棋子 1:黑棋 2:白棋

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

        //2. 建立一個稀疏數組
        int[][]array2=new int[sum+1][3];
        array2[0][0]=11;
        array2[0][1]=11;
        array2[0][2]=sum;

        //遍歷二維數組,將非零的值,存放到稀疏數組中
        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[]ints:array2){
            for (int anInt:ints){
                System.out.print(anInt+"\t");
            }
            System.out.println();
        }

        //還原稀疏數組
        //1.讀取稀疏數組
        int[][]array3=new int[array2[0][0]][array2[0][1]];
        //2.給其中的元素還原它的值
        for (int i = 0; i < array3.length; i++) {
            Arrays.fill(array3[i],0);
        }

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



    }
}
相關文章
相關標籤/搜索