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

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

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

一、LinkedList 介紹

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

二、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)建一個隊列
? ? ? ? Queue<Integer> queue = new LinkedList<>();
? ? ? ? //添加元素
? ? ? ? queue.add(1);
? ? ? ? queue.offer(22);
? ? ? ? for (Integer integer : queue) {
? ? ? ? ? ? System.out.println("queue的add()和offer()驗證:" + integer);
? ? ? ? }

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

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

? ? }

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

? ? public static void linkedListPop() {
? ? ? ? // 創(chuàng)建一個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);
? ? ? ? }

? ? ? ? // 使用迭代器進行正向輸出
? ? ? ? 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)進行輸出元素并移除
? ? ? ? for (int i = 0; i <= 4; i++) {
? ? ? ? ? ? Integer result = linkedList.pop();
? ? ? ? ? ? System.out.println("linkedList.pop():" + result + ">------<" + ",后長度為:" + linkedList.size());
? ? ? ? }
? ? }
}

輸出如下:

queue的add()和offer()驗證:1
queue的add()和offer()驗證:22
queue.peek():1,后長度為:2
queue.poll():1,后長度為:1
>----------一&&&二----------<
deque新增驗證:5
deque新增驗證:3
deque新增驗證:7
deque.peek():5>>>>7,后長度為:3
deque.poll():5>>>>7,后長度為: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>------<,后長度為:4
linkedList.pop():3>------<,后長度為:3
linkedList.pop():5>------<,后長度為:2
linkedList.pop():7>------<,后長度為:1
linkedList.pop():9>------<,后長度為:0

Process finished with exit code 0

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

相關(guān)文章

  • 快速解決跨域請求問題:jsonp和CORS

    快速解決跨域請求問題:jsonp和CORS

    這篇文章主要介紹了快速解決跨域請求問題:jsonp和CORS,涉及jsonp和CORS的介紹,分享了前端 jQuery 寫法,后端 SpringMVC 配置,后端非 SpringMVC 配置等相關(guān)內(nèi)容,具有一定借鑒價值,需要的朋友可以參考下。
    2017-11-11
  • 解決java.util.zip.ZipException: Not in GZIP format報錯問題

    解決java.util.zip.ZipException: Not in GZIP&nbs

    這篇文章主要介紹了解決java.util.zip.ZipException: Not in GZIP format報錯問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • java 地心坐標(biāo)系(ECEF)和WGS-84坐標(biāo)系(WGS84)互轉(zhuǎn)的實現(xiàn)

    java 地心坐標(biāo)系(ECEF)和WGS-84坐標(biāo)系(WGS84)互轉(zhuǎn)的實現(xiàn)

    這篇文章主要介紹了java 地心坐標(biāo)系(ECEF)和WGS-84坐標(biāo)系(WGS84)互轉(zhuǎn)的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • spring中時間格式化的兩種方法示例講解

    spring中時間格式化的兩種方法示例講解

    這篇文章主要介紹了spring中時間格式化的兩種方法,方法一自己格式化,方法二通過配置,結(jié)合實例代碼講解的非常詳細,文中補充介紹了Spring項目中時間格式化的方法,需要的朋友可以參考下
    2023-08-08
  • XML解析四種方式代碼示例詳解

    XML解析四種方式代碼示例詳解

    這篇文章主要介紹了XML解析四種方式代碼示例詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-12-12
  • springboot通過spel結(jié)合aop實現(xiàn)動態(tài)傳參的案例

    springboot通過spel結(jié)合aop實現(xiàn)動態(tài)傳參的案例

    SpEl 是Spring框架中的一個利器,Spring通過SpEl能在運行時構(gòu)建復(fù)雜表達式、存取對象屬性、對象方法調(diào)用等,今天通過本文給大家介紹springboot?spel結(jié)合aop實現(xiàn)動態(tài)傳參,需要的朋友可以參考下
    2022-07-07
  • 使用Java調(diào)用Yolo模型的基本步驟

    使用Java調(diào)用Yolo模型的基本步驟

    Yolo(You Only Look Once)是一種基于深度學(xué)習(xí)的目標(biāo)檢測算法,它可以在一張圖像中同時檢測出多個目標(biāo),并給出它們的位置和類別,這篇文章主要介紹了使用Java調(diào)用Yolo模型的基本步驟,需要的朋友可以參考下
    2024-03-03
  • 使用SpringBoot獲取resources文件路徑

    使用SpringBoot獲取resources文件路徑

    這篇文章主要介紹了使用SpringBoot獲取resources文件路徑,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • Java跨域問題的幾種后端解決方式舉例詳解

    Java跨域問題的幾種后端解決方式舉例詳解

    跨域,是指瀏覽器不能執(zhí)行其他網(wǎng)站的腳本,它是由瀏覽器的同源策略造成的,是瀏覽器對JavaScript實施的安全限制,這篇文章主要給大家介紹了關(guān)于Java跨域問題的幾種后端解決方式的相關(guān)資料,需要的朋友可以參考下
    2023-11-11
  • Springboot整合支付寶支付功能

    Springboot整合支付寶支付功能

    這篇文章主要介紹了Springboot整合支付寶支付功能,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-01-01

最新評論