最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

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

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

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

以下情況使用 ArrayList:

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

以下情況使用 LinkedList :

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

LinkedList 繼承了 AbstractSequentialList 類。分別實現(xiàn)了 Queue 接口,可作為隊列使用; List 接口,可進行列表的相關(guān)操作; Deque 接口,可作為隊列使用; Cloneable 接口,可實現(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)建一個簡單的鏈表實例:

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);
    }
}
// 實例執(zhí)行輸出結(jié)果為:
// [Google, Runoob, Taobao, Weibo]

更多的情況下我們使用 ArrayList 訪問列表中的隨機元素更加高效,但以下幾種情況 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);
    }
}
// 實例執(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);
    }
}
// 實例執(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);
    }
}
// 實例執(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);
    }
}
// 實例執(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());
    }
}
// 實例執(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());
    }
}
// 實例執(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));
        }
    }
}
// 實例執(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);
        }
    }
}
// 實例執(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)將一個集合的所有元素添加到鏈表后面,返回是否成功,成功為 true,失敗為 false
public boolean addAll(int index, Collection c)將一個集合的所有元素添加到鏈表的指定位置后面,返回是否成功,成功為 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()刪除并返回第一個元素
public E removeLast()刪除并返回最后一個元素
public boolean remove(Object o)刪除某一元素,返回是否成功,成功為 true,失敗為 false
public E remove(int index)刪除指定位置的元素
public E poll()刪除并返回第一個元素
public E remove()刪除并返回第一個元素
public boolean contains(Object o)判斷是否含有某一元素
public E get(int index)返回指定位置的元素
public E getFirst()返回第一個元素
public E getLast()返回最后一個元素
public int indexOf(Object o)查找指定元素從前往后第一次出現(xiàn)的索引
public int lastIndexOf(Object o)查找指定元素最后一次出現(xiàn)的索引
public E peek()返回第一個元素
public E element()返回第一個元素
public E peekFirst()返回頭部元素
public E peekLast()返回尾部元素
public E set(int index, E element)設(shè)置指定位置的元素
public Object clone()克隆該列表
public Iterator descendingIterator()返回倒序迭代器
public int size()返回鏈表元素個數(shù)
public ListIterator listIterator(int index)返回從指定位置開始到末尾的迭代器
public Object[] toArray()返回一個由鏈表元素組成的數(shù)組
public T[] toArray(T[] a)返回一個由鏈表元素轉(zhuǎn)換類型而成的數(shù)組

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

相關(guān)文章

  • java.lang.IncompatibleClassChangeError異常的問題解決

    java.lang.IncompatibleClassChangeError異常的問題解決

    本文主要介紹了java.lang.IncompatibleClassChangeError異常的問題解決,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-06-06
  • Elasticsearch配置文件示例示范

    Elasticsearch配置文件示例示范

    這篇文章主要為大家介紹了Elasticsearch配置文件的示例示范,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-04-04
  • springboot如何讀取自定義properties并注入到bean中

    springboot如何讀取自定義properties并注入到bean中

    這篇文章主要介紹了springboot讀取自定義properties并注入到bean中,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • 新手了解java 數(shù)組基礎(chǔ)知識

    新手了解java 數(shù)組基礎(chǔ)知識

    這篇文章主要介紹了Java 數(shù)組分析及簡單實例的相關(guān)資料,在Java中它就是對象,一個比較特殊的對象,需要的朋友可以參考下,希望可以對你有所幫助
    2021-07-07
  • 深入理解Java定時調(diào)度(Timer)機制

    深入理解Java定時調(diào)度(Timer)機制

    這篇文章主要介紹了深入理解Java定時調(diào)度(Timer)機制,本節(jié)我們主要分析 Timer 的功能。小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-01-01
  • 關(guān)閉支付寶小額免密支付步驟詳解

    關(guān)閉支付寶小額免密支付步驟詳解

    支付寶現(xiàn)在作為我們?nèi)粘I钪凶畛S玫膽?yīng)用之一,已經(jīng)成為了人們的虛擬錢包。但是最近,有人發(fā)現(xiàn)了支付寶的一個漏洞,本文將對如何關(guān)閉小額免密支付進行步驟介紹。下面跟著小編一起來看下吧
    2017-01-01
  • Java面向接口編程之命令模式實例詳解

    Java面向接口編程之命令模式實例詳解

    這篇文章主要介紹了Java面向接口編程之命令模式,結(jié)合實例形式詳細分析了Java面向接口編程命令模式的定義、使用方法及相關(guān)操作注意事項,需要的朋友可以參考下
    2019-09-09
  • Spring Bean實例化實現(xiàn)過程解析

    Spring Bean實例化實現(xiàn)過程解析

    這篇文章主要介紹了Spring Bean實例化實現(xiàn)過程解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-02-02
  • Java設(shè)計模式之橋接模式

    Java設(shè)計模式之橋接模式

    這篇文章介紹了Java設(shè)計模式之橋接模式,文中通過示例代碼介紹的非常詳細。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-09-09
  • Java多線程中synchronized的工作原理

    Java多線程中synchronized的工作原理

    這篇文章主要介紹了Java多線程中synchronized的工作原理,本期講解 synchronized 工作的原理以及常見的鎖優(yōu)化機制,相信大家在看完這篇博文后對 synchronized 工作流程有一定的理解,需要的朋友可以參考下
    2023-07-07

最新評論

德令哈市| 开远市| 时尚| 郁南县| 龙泉市| 晋州市| 伽师县| 金坛市| 遵义县| 阿拉尔市| 吉木乃县| 泰安市| 澄江县| 沈丘县| 子洲县| 宜良县| 禄劝| 磴口县| 台东市| 大悟县| 巩义市| 延吉市| 南康市| 攀枝花市| 大方县| 阜城县| 林西县| 泽州县| 南川市| 阳春市| 邯郸市| 华容县| 肥西县| 桂林市| 维西| 桃江县| 乌鲁木齐市| 灌云县| 大名县| 翁源县| 青铜峡市|