Java 數據結構與算法系列精講之數組
概述
從今天開始, 小白我將帶大傢開啟 Jave 數據結構 & 算法的新篇章.
數組
數組 (Array) 是有序數據的集合, 在 Java 中 java.util.Arrays
包含用來操作數組的各種方法, 比如排序和搜索等. 其所有方法均為靜態方法, 調用起來非常簡單.
聲明數組的兩個方法
方法一:
數據類型[] array;
方法二:
數據類型 array[];
創建數組的兩個方法
方法一:
數據類型[] array = new 數據類型[n];
int[] array = new int[10];
方法二:
數據類型[] arrray = {value1, value2, …}
int[] array = new int[10];
索引
索引 (Index) 可以幫助我們定位到想要的數據, 大幅提高數據的檢索速度.
自定義數組
泛型
<E>
示一種指定的數據類型, 叫做泛型. E, 取自 Element (元素) 的首字母. 在出現 E 的地方, 我們使用一種引用數據類型將其替換即可, 表示我們將存儲哪種引用類型的元素.
構造函數
// 有參構造 public Array(int capacity){ data = (E[]) new Object[capacity]; size = 0; } // 無參構造 public Array(){ this(10); }
元素操作
// 頭部添加元素 public void addFirst(E element){ // 如果超過數組最大容量, 扔出異常 if(size == data.length){ throw new RuntimeException("array is full!"); } // 列表所有index及元素後移 for (int i = size - 1; i >= 0; i--) { data[i + 1] = data[i]; } // 數組第size個賦值為element data[0] = element; // 數組大小+1 size++ } // 尾部添加元素 public void addLast(E element){ // 如果超過數組最大容量, 扔出異常 if(size == data.length){ throw new RuntimeException("array is full!"); } // 數組第size個賦值為element data[size] = element; // 數組大小+1 size++; } // 通過索引添加元素 public void add(int index, E element){ // 如果超過數組最大容量, 扔出異常 if(size == data.length){ throw new RuntimeException("reached max capacity"); } if(index < 0 || index > size){ throw new RuntimeException("invalid index"); } // 列表所有index及以後的元素後移 for (int i = size-1; i >=index; i--) { data[i + 1] = data[i]; } data[index] = element; size++; }
調用
public static void main(String[] args) { // 創建數組 Array array = new Array(10); // 尾部添加 array.addLast(2); array.addLast(3); array.addLast(4); System.out.println(array.toString()); // 頭部添加 array.addFirst(1); array.addFirst(0); System.out.println(array.toString()); // 通過index添加元素 array.add(0, -1); array.add(6, 5); System.out.println(array.toString()); }
輸出結果:
Array{data=[2, 3, 4, null, null, null, null, null, null, null]}
Array{data=[0, 1, 2, 3, 4, null, null, null, null, null]}
Array{data=[-1, 0, 1, 2, 3, 4, 5, null, null, null]}
完整代碼
import java.util.Arrays; public class Array<E> { private E[] data; // 存放數據 private int size; // 存放數組元素個數 // 有參構造 public Array(int capacity){ data = (E[]) new Object[capacity]; size = 0; } // 無參構造 public Array(){ this(10); } // 獲取數組容量 public int getCapacity(){ return data.length; } // 獲取數組元素個數 public int getSize(){ return size; } // 判斷數組是否為空 public boolean isEmpty(){ return size == 0; } // 頭部添加元素 public void addFirst(E element){ // 如果超過數組最大容量, 扔出異常 if(size == data.length){ throw new RuntimeException("array is full!"); } // 列表所有index及元素後移 for (int i = size - 1; i >= 0; i--) { data[i + 1] = data[i]; } // 數組第size個賦值為element data[0] = element; // 數組大小+1 size++; } // 尾部添加元素 public void addLast(E element){ // 如果超過數組最大容量, 扔出異常 if(size == data.length){ throw new RuntimeException("array is full!"); } // 數組第size個賦值為element data[size] = element; // 數組大小+1 size++; } // 通過索引添加元素 public void add(int index, E element){ // 如果超過數組最大容量, 扔出異常 if(size == data.length){ throw new RuntimeException("reached max capacity"); } if(index < 0 || index > size){ throw new RuntimeException("invalid index"); } // 列表所有index及以後的元素後移 for (int i = size-1; i >=index; i--) { data[i + 1] = data[i]; } data[index] = element; size++; } @Override public String toString() { return "Array{" + "data=" + Arrays.toString(data) + '}'; } public static void main(String[] args) { // 創建數組 Array array = new Array(10); // 尾部添加 array.addLast(2); array.addLast(3); array.addLast(4); System.out.println(array.toString()); // 頭部添加 array.addFirst(1); array.addFirst(0); System.out.println(array.toString()); // 通過index添加元素 array.add(0, -1); array.add(6, 5); System.out.println(array.toString()); } }
到此這篇關於Java 數據結構與算法系列精講之數組的文章就介紹到這瞭,更多相關Java 數組內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!