Java實(shí)現(xiàn)鏈表中元素的獲取、查詢和修改方法詳解
本文實(shí)例講述了Java實(shí)現(xiàn)鏈表中元素的獲取、查詢和修改方法。分享給大家供大家參考,具體如下:
本節(jié)是在上一小節(jié)Java鏈表中添加元素的基礎(chǔ)上繼續(xù)完善我們的鏈表相關(guān)方法的編寫,在本節(jié)中我們著重對(duì)如何獲取鏈表中元素、查詢?cè)匾约靶薷脑剡M(jìn)行學(xué)習(xí)。
一、獲取元素
1.關(guān)于獲取鏈表中元素的方法的分析
由于我們使用了虛擬頭結(jié)點(diǎn),而我們每次都需要從第一個(gè)真實(shí)節(jié)點(diǎn)開(kāi)始,因此需要首先得到虛擬頭結(jié)點(diǎn)的下一個(gè)節(jié)點(diǎn)是誰(shuí),然后在此基礎(chǔ)上進(jìn)行遍歷工作,相關(guān)代碼如下:
//獲取鏈表的第index(0-based)個(gè)位置的元素 (實(shí)際不常用,練習(xí)用) 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.獲得鏈表的第一個(gè)元素
對(duì)于該方法則是依靠在get()方法的。
//獲得鏈表的第一個(gè)元素 public E getFirst() { return get(0); }
3.獲得鏈表的最后一個(gè)元素
對(duì)于該方法頁(yè)是依靠在get()方法的。
//獲得鏈表的最后一個(gè)元素 public E getLast() { return get(size - 1); }
二、修改鏈表元素
由于我們使用了虛擬頭結(jié)點(diǎn),而我們每次都需要從第一個(gè)真實(shí)節(jié)點(diǎn)開(kāi)始,因此需要首先得到虛擬頭結(jié)點(diǎn)的下一個(gè)節(jié)點(diǎn)是誰(shuí),然后在此基礎(chǔ)上進(jìn)行遍歷工作,相關(guān)代碼如下:
//修改鏈表的第index(0-based)個(gè)位置的元素 (實(shí)際不常用,練習(xí)用) 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é)點(diǎn),而我們每次都需要從第一個(gè)真實(shí)節(jié)點(diǎn)開(kāi)始,因此需要首先得到虛擬頭結(jié)點(diǎn)的下一個(gè)節(jié)點(diǎn)是誰(shuí),然后判斷給定的元素值與鏈表中的元素值內(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()方法的重寫
為了在輸出該鏈表對(duì)象時(shí)可以查看相關(guān)自定義的信息,我們對(duì)toString()進(jìn)行重寫改造。
//重寫object類,便于測(cè)試 @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(); }
此時(shí)該方法等同于
//重寫object類,便于測(cè)試 @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(); }
五、測(cè)試
新建一個(gè)main函數(shù),填寫相關(guān)測(cè)試代碼如下:
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(也就是最后一個(gè)節(jié)點(diǎn))。
更多關(guān)于java算法相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Java數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Java操作DOM節(jié)點(diǎn)技巧總結(jié)》、《Java文件與目錄操作技巧匯總》和《Java緩存操作技巧匯總》
希望本文所述對(duì)大家java程序設(shè)計(jì)有所幫助。
相關(guān)文章
Java中反射動(dòng)態(tài)代理接口的詳解及實(shí)例
這篇文章主要介紹了Java中反射動(dòng)態(tài)代理接口的詳解及實(shí)例的相關(guān)資料,需要的朋友可以參考下2017-04-04Java讀取resources中資源文件路徑以及jar中文件無(wú)法讀取的解決
這篇文章主要介紹了Java讀取resources中資源文件路徑以及jar中文件無(wú)法讀取的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-05-05Spring中的接口重試機(jī)制spring-retry之listeners參數(shù)解析
這篇文章主要介紹了Spring中的接口重試機(jī)制spring-retry之listeners參數(shù)解析,注解@Retryable有一個(gè)參數(shù)listeners沒(méi)有說(shuō)明,那么本篇文章我們?cè)敿?xì)介紹一個(gè)這個(gè)參數(shù)的用,需要的朋友可以參考下2024-01-01Java中拷貝list數(shù)組幾種常見(jiàn)的方法
這篇文章主要給大家介紹了關(guān)于Java中拷貝list數(shù)組幾種常見(jiàn)的方法,在Java中,List是一個(gè)接口,它有多個(gè)實(shí)現(xiàn)類,如ArrayList、LinkedList等,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-08-08SpringBoot自動(dòng)配置原理,你真的懂嗎?(簡(jiǎn)單易懂)
這篇文章主要介紹了SpringBoot自動(dòng)配置原理,你真的懂嗎?本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-05-05Java實(shí)現(xiàn)生成n個(gè)不重復(fù)的隨機(jī)數(shù)
這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)生成n個(gè)不重復(fù)的隨機(jī)數(shù),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-05-05SpringBoot整合Mybatis的知識(shí)點(diǎn)匯總
在本篇文章里小編給各位整理的是關(guān)于SpringBoot整合Mybatis的知識(shí)點(diǎn)匯總,有興趣學(xué)習(xí)的參考下。2020-02-02