筆記之列表基本操作
阿新 • • 發佈:2020-09-14
陣列的定義
把陣列當作若干個盒子,能存放東西
變數:一個盒子,點
一維:一行盒子,線
二維:在一維的每個盒子裡面,再放一行盒子,面
陣列建立
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])); } }