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

Java實(shí)現(xiàn)雙端鏈表LinkedList

 更新時(shí)間:2022年07月14日 09:41:38   作者:一起努力啊啊啊啊  
本文主要介紹了Java實(shí)現(xiàn)雙端鏈表LinkedList,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

一、LinkedList 介紹

1??LinkedList 是 Java 集合框架中一個(gè)重要的實(shí)現(xiàn),其底層采用的雙向鏈表結(jié)構(gòu),沒(méi)有初始化大小,就是一直在前面或者后面新增就好。由于基于鏈表實(shí)現(xiàn),存儲(chǔ)元素過(guò)程中,無(wú)需像ArrayList那樣進(jìn)行擴(kuò)容。
2??LinkedList 存儲(chǔ)元素的節(jié)點(diǎn)需要額外的空間存儲(chǔ)前驅(qū)和后繼的引用。
3??LinkedList 在鏈表頭部和尾部插入效率比較高,但在指定位置進(jìn)行插入時(shí),效率一般。原因是,在指定位置插入需要定位到該位置處的節(jié)點(diǎn),此操作的時(shí)間復(fù)雜度為 O(N)。
4??和 ArrayList 一樣,LinkedList 也支持空值和重復(fù)值。LinkedList 也是非線程安全的集合類(lèi)。
5??由于 LinkedList 實(shí)現(xiàn)了 List 和 Deque 兩個(gè)接口,所以 LinkedList 方法分兩種,一種是 List 接口的方法,第二種是 Deque 接口的方法。
6??由于 LinkedList 是一個(gè)實(shí)現(xiàn)了 Deque 的雙端隊(duì)列,所以 LinkedList 既可以當(dāng)做Queue,又可以當(dāng)做 Stack。在將 LinkedList 當(dāng)做 Stack 時(shí),使用 pop()、push()、peek() 需要注意的是 LinkedList 內(nèi)部是將鏈表頭部當(dāng)做棧頂,鏈表尾部當(dāng)做棧底。
7??隨機(jī)訪問(wèn)慢、插入刪除速度快。

二、LinkedList 使用

import java.util.Iterator;
import java.util.Deque;
import java.util.LinkedList;
import java.util.Queue;


public class LinkedlistDemo {

? ? public static void main(String[] args) {
? ? ? ? linkedShow();
? ? ? ? System.out.println(">----------一&&&二----------<");
? ? ? ? linkedDeque();
? ? ? ? System.out.println(">----------二&&&三----------<");
? ? ? ? linkedListPop();
? ? }

? ? public static void linkedShow() {
? ? ? ? // 創(chuàng)建一個(gè)隊(duì)列
? ? ? ? Queue<Integer> queue = new LinkedList<>();
? ? ? ? //添加元素
? ? ? ? queue.add(1);
? ? ? ? queue.offer(22);
? ? ? ? for (Integer integer : queue) {
? ? ? ? ? ? System.out.println("queue的add()和offer()驗(yàn)證:" + integer);
? ? ? ? }

? ? ? ? // 獲取但不移除此隊(duì)列的頭
? ? ? ? Integer a = queue.peek();
? ? ? ? // 輸出獲取的元素并打印出元素的長(zhǎng)度,驗(yàn)證一下長(zhǎng)度看看是否有變化
? ? ? ? System.out.println("queue.peek():" + a + ",后長(zhǎng)度為:" + queue.size());

? ? ? ? // 獲取并移除此隊(duì)列的頭
? ? ? ? Integer bInteger = queue.poll();
? ? ? ? // 輸出獲取的元素并打印出元素的長(zhǎng)度,驗(yàn)證一下長(zhǎng)度看看是否有變化
? ? ? ? System.out.println("queue.poll():" + bInteger + ",后長(zhǎng)度為:" + queue.size());

? ? }

? ? public static void linkedDeque() {
? ? ? ? Deque<Integer> deque = new LinkedList<>();
? ? ? ? // 添加元素
? ? ? ? deque.add(3);
? ? ? ? // 在第一個(gè)位置添加元素
? ? ? ? deque.offerFirst(5);
? ? ? ? // 在最后一個(gè)位置添加元素
? ? ? ? deque.offerLast(7);
? ? ? ? for (Integer integer : deque) {
? ? ? ? ? ? System.out.println("deque新增驗(yàn)證:" + integer);
? ? ? ? }
? ? ? ? // 取出不移除元素
? ? ? ? Integer kInteger = deque.peekFirst();
? ? ? ? Integer mInteger = deque.peekLast();
? ? ? ? System.out.println("deque.peek():" + kInteger + ">>>>" + mInteger + ",后長(zhǎng)度為:" + deque.size());
? ? ? ? // 取出并移除元素方法
? ? ? ? Integer kInteger2 = deque.pollFirst();
? ? ? ? Integer mInteger2 = deque.pollLast();
? ? ? ? System.out.println("deque.poll():" + kInteger2 + ">>>>" + mInteger2 + ",后長(zhǎng)度為:" + deque.size());
? ? }

? ? public static void linkedListPop() {
? ? ? ? // 創(chuàng)建一個(gè)linkedlist集合
? ? ? ? LinkedList<Integer> linkedList = new LinkedList<>();
? ? ? ? // 添加元素
? ? ? ? linkedList.push(9);
? ? ? ? linkedList.push(7);
? ? ? ? linkedList.push(5);
? ? ? ? linkedList.push(3);
? ? ? ? linkedList.push(1);
? ? ? ? for (Integer integer : linkedList) {
? ? ? ? ? ? System.out.println("linkedList.push():" + integer);
? ? ? ? }

? ? ? ? // 使用迭代器進(jìn)行正向輸出
? ? ? ? Iterator<Integer> inIterator = linkedList.iterator();
? ? ? ? while (inIterator.hasNext()) {
? ? ? ? ? ? Integer integer = inIterator.next();
? ? ? ? ? ? System.out.println(integer);
? ? ? ? }
? ? ? ? System.out.println("-------分割線-------");
? ? ? ? // 使用迭代器反向輸出結(jié)果
? ? ? ? Iterator<Integer> inIterator1 = linkedList.descendingIterator();
? ? ? ? while (inIterator1.hasNext()) {
? ? ? ? ? ? Integer integer = inIterator1.next();
? ? ? ? ? ? System.out.println(integer);
? ? ? ? }
? ? ? ? System.out.println("-------分割線-------");
? ? ? ? // 使用for循環(huán)進(jìn)行輸出元素并移除
? ? ? ? for (int i = 0; i <= 4; i++) {
? ? ? ? ? ? Integer result = linkedList.pop();
? ? ? ? ? ? System.out.println("linkedList.pop():" + result + ">------<" + ",后長(zhǎng)度為:" + linkedList.size());
? ? ? ? }
? ? }
}

輸出如下:

queue的add()和offer()驗(yàn)證:1
queue的add()和offer()驗(yàn)證:22
queue.peek():1,后長(zhǎng)度為:2
queue.poll():1,后長(zhǎng)度為:1
>----------一&&&二----------<
deque新增驗(yàn)證:5
deque新增驗(yàn)證:3
deque新增驗(yàn)證:7
deque.peek():5>>>>7,后長(zhǎng)度為:3
deque.poll():5>>>>7,后長(zhǎng)度為:1
>----------二&&&三----------<
linkedList.push():1
linkedList.push():3
linkedList.push():5
linkedList.push():7
linkedList.push():9
1
3
5
7
9
-------分割線-------
9
7
5
3
1
-------分割線-------
linkedList.pop():1>------<,后長(zhǎng)度為:4
linkedList.pop():3>------<,后長(zhǎng)度為:3
linkedList.pop():5>------<,后長(zhǎng)度為:2
linkedList.pop():7>------<,后長(zhǎng)度為:1
linkedList.pop():9>------<,后長(zhǎng)度為:0

Process finished with exit code 0

 到此這篇關(guān)于Java實(shí)現(xiàn)雙端鏈表LinkedList的文章就介紹到這了,更多相關(guān)Java 雙端鏈表LinkedList內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 詳解Maven Docker鏡像使用技巧

    詳解Maven Docker鏡像使用技巧

    這篇文章主要介紹了詳解Maven Docker鏡像使用技巧,Maven是目前最流行的Java項(xiàng)目管理工具之一,提供了強(qiáng)大的包依賴管理和應(yīng)用構(gòu)建功能。本文以Maven為例介紹了Docker在應(yīng)用構(gòu)建中的一些常見(jiàn)技巧。
    2018-06-06
  • 關(guān)于連接池詳解(HikariCP、Druid)

    關(guān)于連接池詳解(HikariCP、Druid)

    這篇文章主要介紹了關(guān)于連接池詳解(HikariCP、Druid),具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-03-03
  • Java常用對(duì)象操作工具代碼實(shí)例

    Java常用對(duì)象操作工具代碼實(shí)例

    這篇文章主要介紹了Java常用對(duì)象操作工具代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-12-12
  • java中實(shí)現(xiàn)token過(guò)期失效超時(shí)

    java中實(shí)現(xiàn)token過(guò)期失效超時(shí)

    在Java應(yīng)用程序中,為了確保安全性和保護(hù)用戶數(shù)據(jù),一種常見(jiàn)的做法是使用Token進(jìn)行身份驗(yàn)證和授權(quán),Token是由服務(wù)器生成的具有一定時(shí)效的令牌,用于識(shí)別和驗(yàn)證用戶身份,當(dāng)Token失效后,用戶將無(wú)法再進(jìn)行相關(guān)操作,從而提高系統(tǒng)的安全性
    2023-10-10
  • spring cloud gateway 限流的實(shí)現(xiàn)與原理

    spring cloud gateway 限流的實(shí)現(xiàn)與原理

    這篇文章主要介紹了spring cloud gateway 限流的實(shí)現(xiàn)與原理,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-12-12
  • Java編程獲取文本框的內(nèi)容實(shí)例解析

    Java編程獲取文本框的內(nèi)容實(shí)例解析

    這篇文章主要介紹了Java編程獲取文本框的值實(shí)例解析,將輸入的值保存在一個(gè)指定的 txt文件之中,具有一定的參考價(jià)值,需要的朋友可以了解。
    2017-09-09
  • 解決@Transaction注解導(dǎo)致動(dòng)態(tài)切換更改數(shù)據(jù)庫(kù)失效問(wèn)題

    解決@Transaction注解導(dǎo)致動(dòng)態(tài)切換更改數(shù)據(jù)庫(kù)失效問(wèn)題

    這篇文章主要介紹了解決@Transaction注解導(dǎo)致動(dòng)態(tài)切換更改數(shù)據(jù)庫(kù)失效問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • Java加密解密工具(適用于JavaSE/JavaEE/Android)

    Java加密解密工具(適用于JavaSE/JavaEE/Android)

    這篇文章主要介紹了Java加密解密工具,適用于JavaSE/JavaEE/Android,感興趣的小伙伴們可以參考一下
    2016-04-04
  • springboot+mybatis通過(guò)實(shí)體類(lèi)自動(dòng)生成數(shù)據(jù)庫(kù)表的方法

    springboot+mybatis通過(guò)實(shí)體類(lèi)自動(dòng)生成數(shù)據(jù)庫(kù)表的方法

    這篇文章主要介紹了springboot+mybatis通過(guò)實(shí)體類(lèi)自動(dòng)生成數(shù)據(jù)庫(kù)表的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • Java中的權(quán)重算法(如Dubbo的負(fù)載均衡權(quán)重)詳解

    Java中的權(quán)重算法(如Dubbo的負(fù)載均衡權(quán)重)詳解

    這篇文章主要介紹了Java中的權(quán)重算法(如Dubbo的負(fù)載均衡權(quán)重)詳解,負(fù)載均衡,其含義就是指將負(fù)載進(jìn)行平衡、分?jǐn)偟蕉鄠€(gè)操作單元上進(jìn)行運(yùn)行,例如FTP服務(wù)器、Web服務(wù)器、企業(yè)核心應(yīng)用服務(wù)器和其它主要任務(wù)服務(wù)器等,從而協(xié)同完成工作任務(wù),需要的朋友可以參考下
    2023-08-08

最新評(píng)論

灵璧县| 水城县| 漳州市| 兴海县| 锦屏县| 柏乡县| 徐州市| 哈密市| 万载县| 棋牌| 专栏| 兰溪市| 巴楚县| 海盐县| 临颍县| 曲靖市| 容城县| 定陶县| 昌宁县| 台东市| 河津市| 桓仁| 德州市| 延津县| 安顺市| 红河县| 福泉市| 屏山县| 沂南县| 河曲县| 柞水县| 华宁县| 呼玛县| 嫩江县| 麻栗坡县| 高邑县| 巴楚县| 云浮市| 铜山县| 潢川县| 台中市|