Java實現(xiàn)鏈表中元素的獲取、查詢和修改方法詳解
本文實例講述了Java實現(xiàn)鏈表中元素的獲取、查詢和修改方法。分享給大家供大家參考,具體如下:
本節(jié)是在上一小節(jié)Java鏈表中添加元素的基礎(chǔ)上繼續(xù)完善我們的鏈表相關(guān)方法的編寫,在本節(jié)中我們著重對如何獲取鏈表中元素、查詢元素以及修改元素進行學習。
一、獲取元素1.關(guān)于獲取鏈表中元素的方法的分析由于我們使用了虛擬頭結(jié)點,而我們每次都需要從第一個真實節(jié)點開始,因此需要首先得到虛擬頭結(jié)點的下一個節(jié)點是誰,然后在此基礎(chǔ)上進行遍歷工作,相關(guān)代碼如下:
//獲取鏈表的第index(0-based)個位置的元素 (實際不常用,練習用) public E get(int index) { //合法性判斷 if (index < 0 || index >= size) { throw new IllegalArgumentException('Get failed,Illegal index'); } Node<E> cur = dummyHead.next; for (int i = 0; i < index; i++) { cur = cur.next; } return cur.e; }2.獲得鏈表的第一個元素
對于該方法則是依靠在get()方法的。
//獲得鏈表的第一個元素 public E getFirst() { return get(0); }3.獲得鏈表的最后一個元素
對于該方法頁是依靠在get()方法的。
//獲得鏈表的最后一個元素 public E getLast() { return get(size - 1); }二、修改鏈表元素
由于我們使用了虛擬頭結(jié)點,而我們每次都需要從第一個真實節(jié)點開始,因此需要首先得到虛擬頭結(jié)點的下一個節(jié)點是誰,然后在此基礎(chǔ)上進行遍歷工作,相關(guān)代碼如下:
//修改鏈表的第index(0-based)個位置的元素 (實際不常用,練習用) public void set(int index, E e) { //合法性判斷 if (index < 0 || index >= size) { throw new IllegalArgumentException('update failed,Illegal index'); } Node<E> cur = dummyHead.next; for (int i = 0; i < index; i++) { cur = cur.next; } cur.e = e; }三、判斷是否有元素e
由于我們使用了虛擬頭結(jié)點,而我們每次都需要從第一個真實節(jié)點開始,因此需要首先得到虛擬頭結(jié)點的下一個節(jié)點是誰,然后判斷給定的元素值與鏈表中的元素值內(nèi)容是否相等(equals()方法),若相等則返回true,否則返回false。
//查找鏈表中是否有元素e public boolean contains(E e) { Node<E> cur = dummyHead.next; while (cur != null) { if (cur.e.equals(e)) {return true; } cur = cur.next; } return false; }四、toString()方法的重寫
為了在輸出該鏈表對象時可以查看相關(guān)自定義的信息,我們對toString()進行重寫改造。
//重寫object類,便于測試 @Override public String toString() { StringBuilder res = new StringBuilder(); Node<E> cur = dummyHead.next; while (cur != null) { res.append(cur + '->'); cur = cur.next; } res.append('NULL'); return res.toString(); }
此時該方法等同于
//重寫object類,便于測試 @Override public String toString() { StringBuilder res = new StringBuilder(); for (Node<E> cur = dummyHead.next; cur != null; cur = cur.next) { res.append(cur + '->'); } res.append('NULL'); return res.toString(); }五、測試
新建一個main函數(shù),填寫相關(guān)測試代碼如下:
package LinkedList;public class TestMain { public static void main(String[] args) { LinkedList<Integer> linkedList = new LinkedList<Integer>(); System.out.println('============在鏈表頭部添加============'); for (int i = 0; i < 5; i++) { linkedList.addFirst(i); System.out.println(linkedList); } System.out.println('============修改鏈表============'); linkedList.set(2,666); System.out.println(linkedList); }}
結(jié)果為:
結(jié)果分析:由于是在鏈表頭部添加元素,故最終顯示結(jié)果為從右到左,最右為NULL(也就是最后一個節(jié)點)。
更多關(guān)于java算法相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Java數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Java操作DOM節(jié)點技巧總結(jié)》、《Java文件與目錄操作技巧匯總》和《Java緩存操作技巧匯總》
希望本文所述對大家java程序設(shè)計有所幫助。
相關(guān)文章:
1. Python如何批量生成和調(diào)用變量2. ASP.NET MVC實現(xiàn)橫向展示購物車3. ASP.Net Core對USB攝像頭進行截圖4. .net如何優(yōu)雅的使用EFCore實例詳解5. ASP.Net Core(C#)創(chuàng)建Web站點的實現(xiàn)6. python 爬取京東指定商品評論并進行情感分析7. python基礎(chǔ)之匿名函數(shù)詳解8. Python獲取B站粉絲數(shù)的示例代碼9. ajax動態(tài)加載json數(shù)據(jù)并詳細解析10. 通過CSS數(shù)學函數(shù)實現(xiàn)動畫特效
