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

Java數(shù)據(jù)結(jié)構(gòu)之LinkedList的用法詳解

 更新時(shí)間:2023年05月08日 08:29:11   作者:無聲編碼器  
鏈表(Linked?list)是一種常見的基礎(chǔ)數(shù)據(jù)結(jié)構(gòu),是一種線性表。Java的LinkedList(鏈表)?類似于?ArrayList,是一種常用的數(shù)據(jù)容器,本文就來簡(jiǎn)單講講它的使用吧

鏈表(Linked list)是一種常見的基礎(chǔ)數(shù)據(jù)結(jié)構(gòu),是一種線性表,但是并不會(huì)按線性的順序存儲(chǔ)數(shù)據(jù),而是在每一個(gè)節(jié)點(diǎn)里存到下一個(gè)節(jié)點(diǎn)的地址。鏈表可分為單向鏈表和雙向鏈表。

一個(gè)單向鏈表包含兩個(gè)值: 當(dāng)前節(jié)點(diǎn)的值和一個(gè)指向下一個(gè)節(jié)點(diǎn)的鏈接。

一個(gè)雙向鏈表有三個(gè)整數(shù)值: 數(shù)值、向后的節(jié)點(diǎn)鏈接、向前的節(jié)點(diǎn)鏈接。

Java的LinkedList(鏈表) 類似于 ArrayList,是一種常用的數(shù)據(jù)容器。與 ArrayList 相比,LinkedList 的增加和刪除的操作效率更高,而查找和修改的操作效率較低。

以下情況使用 ArrayList:

  • 頻繁訪問列表中的某一個(gè)元素。
  • 只需要在列表末尾進(jìn)行添加和刪除元素操作。

以下情況使用 LinkedList :

  • 你需要通過循環(huán)迭代來訪問列表中的某些元素。
  • 需要頻繁的在列表開頭、中間、末尾等位置進(jìn)行添加和刪除元素操作。

LinkedList 繼承了 AbstractSequentialList 類。分別實(shí)現(xiàn)了 Queue 接口,可作為隊(duì)列使用; List 接口,可進(jìn)行列表的相關(guān)操作; Deque 接口,可作為隊(duì)列使用; Cloneable 接口,可實(shí)現(xiàn)克??; java.io.Serializable 接口,即可支持序列化,能通過序列化去傳輸。

LinkedList 類位于 java.util 包中,使用前需要引入它,語法格式如下:

// 引入 LinkedList 類
import java.util.LinkedList; 
LinkedList<E> list = new LinkedList<E>();   // 普通創(chuàng)建方法
//或者
LinkedList<E> list = new LinkedList(Collection<? extends E> c); // 使用集合創(chuàng)建鏈表

創(chuàng)建一個(gè)簡(jiǎn)單的鏈表實(shí)例:

import java.util.LinkedList;

public class RunoobTest {
    public static void main(String[] args) {
        LinkedList<String> sites = new LinkedList<String>();
        sites.add("Google");
        sites.add("Runoob");
        sites.add("Taobao");
        sites.add("Weibo");
        System.out.println(sites);
    }
}
// 實(shí)例執(zhí)行輸出結(jié)果為:
// [Google, Runoob, Taobao, Weibo]

更多的情況下我們使用 ArrayList 訪問列表中的隨機(jī)元素更加高效,但以下幾種情況 LinkedList 提供了更高效的方法

在列表開頭添加元素:

// 引入 LinkedList 類
import java.util.LinkedList;

public class RunoobTest {
    public static void main(String[] args) {
        LinkedList<String> sites = new LinkedList<String>();
        sites.add("Google");
        sites.add("Runoob");
        sites.add("Taobao");
        // 使用 addFirst() 在頭部添加元素
        sites.addFirst("Wiki");
        System.out.println(sites);
    }
}
// 實(shí)例執(zhí)行輸出結(jié)果為:
// [Wiki, Google, Runoob, Taobao]

在列表結(jié)尾添加元素:

// 引入 LinkedList 類
import java.util.LinkedList;

public class RunoobTest {
    public static void main(String[] args) {
        LinkedList<String> sites = new LinkedList<String>();
        sites.add("Google");
        sites.add("Runoob");
        sites.add("Taobao");
        // 使用 addLast() 在尾部添加元素
        sites.addLast("Wiki");
        System.out.println(sites);
    }
}
// 實(shí)例執(zhí)行輸出結(jié)果為:
// [Google, Runoob, Taobao, Wiki]

在列表開頭移除元素:

// 引入 LinkedList 類
import java.util.LinkedList;

public class RunoobTest {
    public static void main(String[] args) {
        LinkedList<String> sites = new LinkedList<String>();
        sites.add("Google");
        sites.add("Runoob");
        sites.add("Taobao");
        sites.add("Weibo");
        // 使用 removeFirst() 移除頭部元素
        sites.removeFirst();
        System.out.println(sites);
    }
}
// 實(shí)例執(zhí)行輸出結(jié)果為:
// [Runoob, Taobao, Weibo]

在列表結(jié)尾移除元素:

// 引入 LinkedList 類
import java.util.LinkedList;

public class RunoobTest {
    public static void main(String[] args) {
        LinkedList<String> sites = new LinkedList<String>();
        sites.add("Google");
        sites.add("Runoob");
        sites.add("Taobao");
        sites.add("Weibo");
        // 使用 removeLast() 移除尾部元素
        sites.removeLast();
        System.out.println(sites);
    }
}
// 實(shí)例執(zhí)行輸出結(jié)果為:
// [Google, Runoob, Taobao]

獲取列表開頭的元素:

// 引入 LinkedList 類
import java.util.LinkedList;

public class RunoobTest {
    public static void main(String[] args) {
        LinkedList<String> sites = new LinkedList<String>();
        sites.add("Google");
        sites.add("Runoob");
        sites.add("Taobao");
        sites.add("Weibo");
        // 使用 getFirst() 獲取頭部元素
        System.out.println(sites.getFirst());
    }
}
// 實(shí)例執(zhí)行輸出結(jié)果為:
// Google

獲取列表結(jié)尾的元素:

// 引入 LinkedList 類
import java.util.LinkedList;

public class RunoobTest {
    public static void main(String[] args) {
        LinkedList<String> sites = new LinkedList<String>();
        sites.add("Google");
        sites.add("Runoob");
        sites.add("Taobao");
        sites.add("Weibo");
        // 使用 getLast() 獲取尾部元素
        System.out.println(sites.getLast());
    }
}
// 實(shí)例執(zhí)行輸出結(jié)果為:
// Weibo

LinkedList 迭代元素方式

可以使用 for 配合 size() 方法來迭代列表中的元素:

// 引入 LinkedList 類
import java.util.LinkedList;

public class RunoobTest {
    public static void main(String[] args) {
        LinkedList<String> sites = new LinkedList<String>();
        sites.add("Google");
        sites.add("Runoob");
        sites.add("Taobao");
        sites.add("Weibo");
        for (int size = sites.size(), i = 0; i < size; i++) {
            System.out.println(sites.get(i));
        }
    }
}
// 實(shí)例執(zhí)行輸出結(jié)果為:
// Google
// Runoob
// Taobao
// Weibo

也可以使用 for-each 來迭代元素:

// 引入 LinkedList 類
import java.util.LinkedList;

public class RunoobTest {
    public static void main(String[] args) {
        LinkedList<String> sites = new LinkedList<String>();
        sites.add("Google");
        sites.add("Runoob");
        sites.add("Taobao");
        sites.add("Weibo");
        for (String i : sites) {
            System.out.println(i);
        }
    }
}
// 實(shí)例執(zhí)行輸出結(jié)果為:
// Google
// Runoob
// Taobao
// Weibo

LinkedList 常用方法

方法描述
public boolean add(E e)鏈表末尾添加元素,返回是否成功,成功為 true,失敗為 false
public void add(int index, E element)向指定位置插入元素
public boolean addAll(Collection c)將一個(gè)集合的所有元素添加到鏈表后面,返回是否成功,成功為 true,失敗為 false
public boolean addAll(int index, Collection c)將一個(gè)集合的所有元素添加到鏈表的指定位置后面,返回是否成功,成功為 true,失敗為 false
public void addFirst(E e)元素添加到頭部
public void addLast(E e)元素添加到尾部
public boolean offer(E e)向鏈表末尾添加元素,返回是否成功,成功為 true,失敗為 false
public boolean offerFirst(E e)頭部插入元素,返回是否成功,成功為 true,失敗為 false
public boolean offerLast(E e)尾部插入元素,返回是否成功,成功為 true,失敗為 false
public void clear()清空鏈表
public E removeFirst()刪除并返回第一個(gè)元素
public E removeLast()刪除并返回最后一個(gè)元素
public boolean remove(Object o)刪除某一元素,返回是否成功,成功為 true,失敗為 false
public E remove(int index)刪除指定位置的元素
public E poll()刪除并返回第一個(gè)元素
public E remove()刪除并返回第一個(gè)元素
public boolean contains(Object o)判斷是否含有某一元素
public E get(int index)返回指定位置的元素
public E getFirst()返回第一個(gè)元素
public E getLast()返回最后一個(gè)元素
public int indexOf(Object o)查找指定元素從前往后第一次出現(xiàn)的索引
public int lastIndexOf(Object o)查找指定元素最后一次出現(xiàn)的索引
public E peek()返回第一個(gè)元素
public E element()返回第一個(gè)元素
public E peekFirst()返回頭部元素
public E peekLast()返回尾部元素
public E set(int index, E element)設(shè)置指定位置的元素
public Object clone()克隆該列表
public Iterator descendingIterator()返回倒序迭代器
public int size()返回鏈表元素個(gè)數(shù)
public ListIterator listIterator(int index)返回從指定位置開始到末尾的迭代器
public Object[] toArray()返回一個(gè)由鏈表元素組成的數(shù)組
public T[] toArray(T[] a)返回一個(gè)由鏈表元素轉(zhuǎn)換類型而成的數(shù)組

以上就是Java數(shù)據(jù)結(jié)構(gòu)之LinkedList的用法詳解的詳細(xì)內(nèi)容,更多關(guān)于Java數(shù)據(jù)結(jié)構(gòu)LinkedList的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 詳解Java String中intern方法的原理與使用

    詳解Java String中intern方法的原理與使用

    這篇文章主要為大家介紹了Java String中intern方法的原理以及使用。文中通過圖片和示例代碼進(jìn)行了詳細(xì)展示,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2022-05-05
  • JAVA8 的StringJoiner 使用及原理解析

    JAVA8 的StringJoiner 使用及原理解析

    這篇文章主要介紹了JAVA8 的StringJoiner 使用及原理解析,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-01-01
  • Java HashMap兩種簡(jiǎn)便排序方法解析

    Java HashMap兩種簡(jiǎn)便排序方法解析

    這篇文章主要介紹了Java HashMap兩種簡(jiǎn)便排序方法解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-01-01
  • Java實(shí)現(xiàn)布隆過濾器的示例詳解

    Java實(shí)現(xiàn)布隆過濾器的示例詳解

    布隆過濾器(Bloom?Filter)是1970年由布隆提出來的,實(shí)際上是由一個(gè)很長(zhǎng)的二進(jìn)制數(shù)組+一系列hash算法映射函數(shù),用于判斷一個(gè)元素是否存在于集合中。本文主要介紹了Java實(shí)現(xiàn)布隆過濾器的示例代碼,希望對(duì)大家有所幫助
    2023-03-03
  • 手把手教你SpringBoot整合Mybatis

    手把手教你SpringBoot整合Mybatis

    這篇文章主要介紹了手把手教你SpringBoot整合Mybatis,Mybatis是一款持久化框架,可以幫我們省去大部分jdbc的代碼,需要的朋友可以參考下
    2023-03-03
  • mybatis-plus添加數(shù)據(jù)時(shí)id自增問題及解決

    mybatis-plus添加數(shù)據(jù)時(shí)id自增問題及解決

    這篇文章主要介紹了mybatis-plus添加數(shù)據(jù)時(shí)id自增問題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • Java Arrays.fill()的具體使用

    Java Arrays.fill()的具體使用

    本文主要介紹了Java Arrays.fill()的具體使用,更好地理解Arrays.fill()方法的用法以及在實(shí)際應(yīng)用中如何使用它,感興趣的可以了解一下
    2023-09-09
  • MyBatis游標(biāo)Cursor的正確使用和百萬數(shù)據(jù)傳輸?shù)膬?nèi)存測(cè)試

    MyBatis游標(biāo)Cursor的正確使用和百萬數(shù)據(jù)傳輸?shù)膬?nèi)存測(cè)試

    這篇文章主要介紹了MyBatis游標(biāo)Cursor的正確使用和百萬數(shù)據(jù)傳輸?shù)膬?nèi)存測(cè)試,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • 分析JVM源碼之Thread.interrupt系統(tǒng)級(jí)別線程打斷

    分析JVM源碼之Thread.interrupt系統(tǒng)級(jí)別線程打斷

    在java編程中,我們經(jīng)常會(huì)調(diào)用Thread.sleep()方法使得線程停止運(yùn)行一段時(shí)間,而Thread類中也提供了interrupt方法供我們?nèi)ブ鲃?dòng)打斷一個(gè)線程。那么線程掛起和打斷的本質(zhì)究竟是什么,本文就此問題作一個(gè)探究
    2021-06-06
  • LocalDateTime日期時(shí)間格式中間多了一個(gè)T的問題及解決

    LocalDateTime日期時(shí)間格式中間多了一個(gè)T的問題及解決

    這篇文章主要介紹了LocalDateTime日期時(shí)間格式中間多了一個(gè)T的問題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-03-03

最新評(píng)論