1. 程式人生 > >[2018/11/14] Java學習

[2018/11/14] Java學習

在網上下載了一個用Java實現的資料結構的視訊, 看了前三個視訊, 感覺收穫很大, 今天花了接近三小時在Java的資料結構上.

課程的目錄如下:

第01講:陣列
第02講:簡單排序
第03講:棧和佇列
第04講:連結串列
第05講:雙端連結串列和雙向連結串列
第06講:遞迴的應用
第07講:遞迴的高階應用
第08講:希爾排序
第09講:快速排序
第10講:二叉樹的基本概念
第11講:二叉樹的基本操作
第12講:遍歷二叉樹
第13講:刪除二叉樹節點
第14講:紅黑樹
第15講:雜湊表
第16講:開放地址法
第17講:鏈地址法
第18講:圖的基本概念
第19講:圖的搜尋
第20講:圖的最小生成樹

 

今天和昨天我看完了前三章的內容, 程式碼都親手敲了一遍:

例子配套使用了測試類, 而不是將程式碼寫在一個類裡面, 這種寫法非常的新穎(我以前的寫法太過老土).

細節都是用private保證了類的安全性.

對於變數的使用, 太厲害了.

package ch_01;

public class MyArray {
    private long[] arr;
    private int elements;
    
    /**
     * 初始化陣列
     */
    public MyArray() {
        arr = new long[50];
    }
    
    /**
     * 重構初始化函式, 自定義函式的長度
     * 
@param maxsize */ public MyArray(int maxsize) { arr = new long[maxsize]; } /** * 插入陣列的元素 */ public void insert(long value) { /*由於陣列的最末一項的編號是elements-1, 所以可以直接通過elements來表示新加入的元素*/ arr[elements] = value; elements++; // 注意elements要後移一位, 方便下一次新增元素.
} /** * 顯示陣列的元素 */ public void display() { System.out.print("["); for (int i = 0; i < elements; i++) { System.out.print(arr[i] + " "); } System.out.println("]"); } /** * 按照陣列值搜尋 */ public int search(long value) { int i; for (i = 0; i < elements; i++) { if (value == arr[i]) { break; } } if(i == elements) { // 如果遍歷到最後一個序列, 注意最後一個元素的序列因該是elements-1 return -1; } else { return 1; } } /** * 按序列獲取元素值 */ public long get(int index) { if (index >= elements || index < 0) { throw new ArrayIndexOutOfBoundsException(); } else { return arr[index]; } } /** * 刪除資料 */ public void delete(int index) { if(index >= elements || index < 0) { throw new ArrayIndexOutOfBoundsException(); } else { for(int i = index; i < elements; i++) { arr[i] = arr[i + 1]; //寫錯了, 之前寫成了arr[index] = arr[index + 1] //抹掉index序列的元素的值, 後面的元素整體向前移動 } elements--; // 處理後, 要將元素的數量減一 } } }

 

測試類:

package ch_01;

public class TestArray {
    
    /**
     * 測試類
     * @param args
     */
    
    public static void main(String[] args) {

        MyArray arr = new MyArray();
        arr.insert(10);
        arr.insert(20);
        arr.insert(90);
        arr.display();
        System.out.println(arr.search(20));
        System.out.println(arr.get(2));
        arr.delete(0);
        arr.display();
    }

}