1. 程式人生 > >演算法與資料結構筆記5——線性結構之面向物件的陣列

演算法與資料結構筆記5——線性結構之面向物件的陣列

面向物件的陣列

程式碼示例:
1.建立一個面向物件的類MyArray

import java.util.Arrays;

public class MyArray {
	/** 用於儲存資料的陣列 */
	private int[] elements;

	public MyArray() {
		elements = new int[0];
	}

	/** 獲取陣列長度的方法 */
	public int size() {
		return elements.length;
	}

	/** 往陣列的末尾新增一個元素 */
	public void add(int element) {
		// 建立一個新的陣列
		int[] newArr = new int[elements.length + 1];
		// 把原陣列中的元素複製到新陣列中
		for (int i = 0; i < elements.length; i++) {
			newArr[i] = elements[i];
		}
		// 把新增的元素放入新陣列中
		newArr[elements.length] = element;
		// 使用新陣列替換舊陣列
		elements = newArr;
	}

	/** 列印所有元素到控制檯 */
	public void show() {
		System.out.println(Arrays.toString(elements));
	}

	/**
	 * 刪除陣列中的元素
	 * 
	 * @param index 陣列中的下標
	 */
	public void delete(int index) {
		// 判斷下標是否越界
		if (index < 0 || index > elements.length - 1) {
			throw new RuntimeException("下標越界");
		}
		// 建立一個新的陣列,長度為原陣列的長度-1
		int[] newArr = new int[elements.length - 1];
		// 複製原有資料到新陣列中
		for (int i = 0; i < newArr.length; i++) {
			// 想要刪除的元素前面的元素
			if (i < index) {
				newArr[i] = elements[i];
			} else {
				// 想要刪除的元素後面的元素
				newArr[i] = elements[i + 1];
			}
		}
		// 新陣列替換舊陣列
		elements = newArr;
	}

	/**
	 * 取出指定位置的元素
	 * 
	 * @param index 陣列下標
	 */
	public int get(int index) {
		// 判斷下標是否越界
		if (index < 0 || index > elements.length - 1) {
			throw new RuntimeException("下標越界");
		} else {
			return elements[index];
		}
	}

	/**
	 * 插入一個元素到指定位置
	 * 
	 * @param index   插入元素下標
	 * @param element 插入的內容
	 */
	public void insert(int index, int element) {
		// 建立一個新的陣列
		int[] newArr = new int[elements.length + 1];
		// 將原陣列中的元素放入新的陣列中
		for (int i = 0; i < elements.length; i++) {
			// 目標位置之前的元素
			if (i < index) {
				newArr[i] = elements[i];
			} else {
				// 目標位置之後的元素
				newArr[i + 1] = elements[i];
			}
		}
		// 插入新的元素
		newArr[index] = element;
		// 新陣列替換舊陣列
		elements = newArr;
	}

	/**
	 * 替換指定位置的元素
	 * 
	 * @param index   元素下標
	 * @param element 替換的內容
	 */
	public void set(int index, int element) {
		// 判斷下標是否越界
		if (index < 0 || index > elements.length - 1) {
			throw new RuntimeException("下標越界");
		} else {
			elements[index] = element;
		}
	}
}

2.建立一個TestMyArray測試類

import domo1.util.MyArray;

public class TestMyArray {
	public static void main(String[] args) {
		// 建立一個可變得陣列
		MyArray ma = new MyArray();
		// 獲取陣列長度
		int size = ma.size();
		ma.show();
		// 往可變陣列中新增元素
		ma.add(99);
		ma.add(98);
		ma.add(97);
		// 顯示可變陣列中的所有元素到控制檯
		ma.show();
		// 刪除某個元素
		ma.delete(1);
		ma.show();
		// 取出指定位置的元素
		int element = ma.get(1);
		System.out.println(element);
		System.out.println("=====================");
		ma.add(96);
		ma.add(95);
		ma.add(94);
		ma.show();
		// 插入元素到指定位置
		ma.insert(3, 33);
		ma.show(); 
		System.out.println("=====================");
		// 替換指定位置的元素
		ma.set(0, 100);
		ma.show();
	} 
}

總結

上面的程式碼例項,自定義了一個int陣列。如果小夥伴們要建立一個其他的陣列改變一下型別,做一些細節處理就好了。