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

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.lang.IncompatibleClassChangeError異常的問題解決

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

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

    Elasticsearch配置文件示例示范

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    Java多線程中synchronized的工作原理

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

最新評(píng)論

崇义县| 灯塔市| 老河口市| 蚌埠市| 扎兰屯市| 讷河市| 北海市| 盐边县| 石台县| 永修县| 昭通市| 蓬安县| 谷城县| 临泉县| 锡林郭勒盟| 高要市| 雷波县| 遵义县| 通城县| 城固县| 登封市| 盈江县| 康马县| 白水县| 兴宁市| 青阳县| 江达县| 伊金霍洛旗| 天水市| 繁峙县| 彝良县| 翁源县| 奇台县| 盐城市| 定边县| 奈曼旗| 大新县| 安达市| 达拉特旗| 临邑县| 子洲县|