欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java實(shí)現(xiàn)鏈表中元素的獲取、查詢和修改方法詳解

 更新時(shí)間:2020年03月17日 10:24:35   作者:WFaceBoss  
這篇文章主要介紹了Java實(shí)現(xiàn)鏈表中元素的獲取、查詢和修改方法,結(jié)合實(shí)例形式詳細(xì)分析了Java針對(duì)鏈表中元素的獲取、查詢和修改相關(guān)原理、實(shí)現(xiàn)方法及操作注意事項(xiàng),需要的朋友可以參考下

本文實(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)文章

最新評(píng)論