Java實現(xiàn)鏈表中元素的獲取、查詢和修改方法詳解
本文實例講述了Java實現(xiàn)鏈表中元素的獲取、查詢和修改方法。分享給大家供大家參考,具體如下:
本節(jié)是在上一小節(jié)Java鏈表中添加元素的基礎上繼續(xù)完善我們的鏈表相關方法的編寫,在本節(jié)中我們著重對如何獲取鏈表中元素、查詢元素以及修改元素進行學習。
一、獲取元素
1.關于獲取鏈表中元素的方法的分析
由于我們使用了虛擬頭結點,而我們每次都需要從第一個真實節(jié)點開始,因此需要首先得到虛擬頭結點的下一個節(jié)點是誰,然后在此基礎上進行遍歷工作,相關代碼如下:
//獲取鏈表的第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é)點是誰,然后在此基礎上進行遍歷工作,相關代碼如下:
//修改鏈表的第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é)點是誰,然后判斷給定的元素值與鏈表中的元素值內容是否相等(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()方法的重寫
為了在輸出該鏈表對象時可以查看相關自定義的信息,我們對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ù),填寫相關測試代碼如下:
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);
}
}
結果為:

結果分析:由于是在鏈表頭部添加元素,故最終顯示結果為從右到左,最右為NULL(也就是最后一個節(jié)點)。
更多關于java算法相關內容感興趣的讀者可查看本站專題:《Java數(shù)據(jù)結構與算法教程》、《Java操作DOM節(jié)點技巧總結》、《Java文件與目錄操作技巧匯總》和《Java緩存操作技巧匯總》
希望本文所述對大家java程序設計有所幫助。
相關文章
Java讀取resources中資源文件路徑以及jar中文件無法讀取的解決
這篇文章主要介紹了Java讀取resources中資源文件路徑以及jar中文件無法讀取的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-05-05
Spring中的接口重試機制spring-retry之listeners參數(shù)解析
這篇文章主要介紹了Spring中的接口重試機制spring-retry之listeners參數(shù)解析,注解@Retryable有一個參數(shù)listeners沒有說明,那么本篇文章我們詳細介紹一個這個參數(shù)的用,需要的朋友可以參考下2024-01-01

