Java封裝陣列實現包含、搜尋和刪除元素操作詳解
本文例項講述了Java封裝陣列實現包含、搜尋和刪除元素操作。分享給大家供大家參考,具體如下:
前言:在上一小節中我們已經會了如何獲取和如何修改陣列中的元素,在本小節中我們將繼續學習如何判斷某個元素是否在陣列中存在、查詢出某個元素在陣列中的位置、以及刪除陣列中元素等方法的編寫。
1.查詢陣列中是否包含元素e,返回true或false
//查詢陣列中是否包含元素e public boolean contains(int e) { for (int i = 0; i < size; i++) { if (data[i] == e) return true; } return false; }
有時候在查詢過程中,我們不僅想知道是否包含該指定元素,還想是在該元素所在的位置,則我們可以編寫一個查詢陣列中元素e所在的索引的方法。
2.查詢陣列中元素e所在的索引(只是一個),如果不存在元素e,則返回-1。
//查詢陣列中元素e所在的索引(只是一個),如果不存在元素e,則返回-1; public int find(int e) { for (int i = 0; i < size; i++) { if (data[i] == e) return i; } return -1; }
3.從陣列中刪除index位置的元素,返回刪除的元素
思路:
(1)判斷索引的選擇是否合法
(2)先儲存需要刪除的索引對應的值
(3)執行刪除--實質為索引為index之後(index)的元素依次向前移動,將元素覆蓋。
(4)維護size變數
(5)返回被刪除的元素
//從陣列中刪除index位置的元素,返回刪除的元素 public int remove(int index) { //1.判斷索引的選擇是否合法 if (index < 0 || index > size) throw new IllegalArgumentException("您選擇的位置不合法"); //2.先儲存需要刪除的索引對應的值 int ret = data[index]; //將索引為index之後(index)的元素依次向前移動 for (int i = index + 1; i < size; i++) { //3.執行刪除--實質為索引為index之後(index)的元素依次向前移動,將元素覆蓋 data[i - 1] = data[i]; } //4.維護size變數 size--; //5.返回被刪除的元素 return ret; }
有了刪除index位置的元素的方法,接下來,我們可以封裝一些其他的方法:
3.從陣列中刪除第一個元素,返回刪除的元素
public int removeFirst() { return remove(0); }
4.從陣列中刪除最後一個元素,返回刪除的元素
public int removeLast() { return remove(size - 1); }
在陣列中刪除元素時,除了通過索引的方式刪除之外,有時我們只知道需要刪除的元素是多少,而不知道具體的索引值,因此我們編寫一個通過元素值刪除的方法
5.從陣列中刪除元素(只是刪除一個)
//從陣列中刪除元素(只是刪除一個) public void removeElement(int e) { int index = find(e); if (index != -1) remove(index); }
這裡需要說明的是關於:
(1)從陣列中刪除元素我們並不需要返回被刪除的元素,這是由於對於使用者來說,已經知道自己要刪除的值是多少了,內部無須在返回,
(2)針對通過索引方式刪除的元素需要返回被刪除,這是由於使用者並不知道自己刪除的元素值是什麼,我們把被刪除的值返回給使用者,以便於使用者在需要使用時取用。
6.自定義陣列方法測試驗證
public class ArrayTest { public static void main(String[] args) { // 測試toString()方法 Array arr = new Array(20); for (int i = 0; i < 10; i++) { // 測試addLast(int e)方法 arr.addLast(i); } System.out.println("新增陣列元素:"); System.out.println(arr); // 測試add(int index,int e)方法 arr.add(1,200); System.out.println("在陣列指定索引位置插入元素e:"); System.out.println(arr); // 測試addFirst(int e)方法 arr.addFirst(-10); System.out.println("在陣列頭部位置插入元素e:"); System.out.println(arr); // 測試get(int index)方法 System.out.println("根據陣列索引查詢陣列元素:"); System.out.println(arr.get(11)); // 測試set()方法 arr.set(11,1000); System.out.println("修改陣列索引位置上元素值:"); System.out.println(arr.get(11)); // 測試remove(index)方法 System.out.println(arr); arr.remove(0); System.out.println("刪除陣列中指定index元素:"); System.out.println(arr); // 測試removeFist()方法 arr.removeFirst(); System.out.println("刪除陣列中第一個元素:"); System.out.println(arr); // 測試removeLast()方法 arr.removeLast(); System.out.println("刪除陣列中最後一個元素:"); System.out.println(arr); // 測試removeElement(int e)方法 arr.removeElement(6); System.out.println("刪除陣列中指定元素:"); System.out.println(arr); // 測試contains(int e)方法 boolean isContains = arr.contains(1); System.out.println("陣列中是否存在元素e:"); System.out.println("isContains = " + isContains); // 測試find(int e)方法 int index = arr.find(2); System.out.println("元素e在陣列中的索引:"); System.out.println("index = " + index); } }
結果如下:
新增陣列元素:
Array: size = 10,capacity = 20
[0,1,2,3,4,5,6,7,8,9]
在陣列指定索引位置插入元素e:
Array: size = 11,200,9]
在陣列頭部位置插入元素e:
Array: size = 12,capacity = 20
[-10,9]
根據陣列索引查詢陣列元素:
9
修改陣列索引位置上元素值:
1000
Array: size = 12,1000]
刪除陣列中指定index元素:
Array: size = 11,1000]
刪除陣列中第一個元素:
Array: size = 10,capacity = 20
[200,1000]
刪除陣列中最後一個元素:
Array: size = 9,8]
刪除陣列中指定元素:
Array: size = 8,8]
陣列中是否存在元素e:
isContains = true
元素e在陣列中的索引:
index = 2
關於本小節只是簡單的對陣列中的一個元素進行操作,並進行了簡單的測試。
更多關於java相關內容感興趣的讀者可檢視本站專題:《Java陣列操作技巧總結》、《Java字元與字串操作技巧總結》、《Java數學運算技巧總結》、《Java資料結構與演算法教程》及《Java操作DOM節點技巧總結》
希望本文所述對大家java程式設計有所幫助。