JAVA的學習日記11
阿新 • • 發佈:2020-09-15
Java陣列的使用
For-Each迴圈:即增強for迴圈,一般用來列印陣列元素,因為沒有下標
陣列做方法入參
陣列做返回值
package com.cdoudou.Array; public class Demo04 { public static void main(String[] args) { int[] arrays = {1,2,3,4,5}; printArray(arrays); int[] result = reverse(arrays); for (int i : result) { System.out.print(i+" "); } } //反轉陣列 public static int[] reverse(int[] arrays){ int[] result = new int[arrays.length]; for(int i = 0,j = arrays.length-1; i < arrays.length; i ++, j --){ result[j] = arrays[i]; } return result; } public static void printArray(int[] arrays){ //列印陣列元素 for(int i = 0; i < arrays.length; i ++){ System.out.print(arrays[i] + " "); } System.out.println(); } }
多維陣列
- 多維陣列可以看成是陣列的陣列,比如二維陣列就是一個特殊的一位陣列,其每一個元素都是一個一維陣列
- 二維陣列
int[][] = new int[2][5];
- 解析:上面的二維陣列a可以看成是一個兩行五列的陣列
package com.cdoudou.Array; public class Demo05 { public static void main(String[] args) { //二維陣列 int[][] arrays = {{1,2}, {3,4}}; System.out.println(arrays[0][1]); //2 printArray(arrays[0]); //1、2 } public static void printArray(int[] arrays){ //列印陣列元素 for(int i = 0; i < arrays.length; i ++){ System.out.print(arrays[i] + " "); } System.out.println(); } }
Arrays 類
- 陣列的工具類java.util.Arrays
- 由於陣列物件本身並沒有什麼方法可以供我們呼叫,但API中提供了一個工具類Arrays供我們使用,從而可以對資料物件進行一些基本的操作。
- 檢視JDK幫助文件
- Arrays類中的方法都是static修飾的靜態方法,在使用的時候可以使用類名進行呼叫,而"不用"使用物件來呼叫【是"不用"而不是"不能"】
- 具有下面的常用功能:
給陣列賦值:通過fill方法,對陣列進行填充
給陣列排序:通過sort方法,按升序
比較陣列:通過equals方法比較陣列中元素值是否相等
查詢陣列元素:通過binarySearch方法能對排序好的陣列進行二分查詢法操作
氣泡排序
- 氣泡排序無疑是最為出名的排序演算法之一,總共有八大排序:
- 冒泡的程式碼還是比較簡單的,一共兩層迴圈,外層冒泡輪數,裡層依次比較,時間複雜度為O(n^2)
稀疏陣列
- 因為二維陣列很多值預設為0,因此記錄了很多沒有意義的資料
- 如何解決:稀疏陣列
稀疏陣列的介紹:
- 當一個數組中大部分元素為0,或者為同一值得陣列時,可以使用稀疏陣列來儲存該陣列。
- 稀疏陣列的處理方式:
記錄陣列一共有幾行幾列,有多少個不同值
把具有不同值得元素和行列及值記錄在一個小規模的陣列中,從而縮小程式的規模
package com.cdoudou.Array;
public class Demo07 {
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[] ins : array1){
for(int inst : ins){
System.out.print(inst + "\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 ++;
}
}
}
System.out.println("有效的個數為:"+ sum);
//2.建立一個稀疏陣列的陣列
int[][] array2 = new int[sum+1][3];
array2[0][0] = 11;
array2[0][1] = 11;
array2[0][2] = sum;
//3.遍歷二維陣列,將非零的值,存放稀疏陣列中
int count = 0;
for (int i = 0; i < array1.length; i++) {
for (int j = 0; j < array1.length; j++) {
if(array1[i][j] != 0){
count ++;
array2[i][0] = i;
array2[i][1] = j;
array2[i][2] = array1[i][j];
}
}
}
//4.輸出稀疏陣列
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] + "\t");
}
}
}