Java中的LinkedList
介紹:
LinkedList是由節點組成的線性數據結構。 在單鏈列表中,每個節點包含數據和引用。 在此,參考部分引用鏈表中的下一個節點。
另一方面,在雙鏈表中,我們具有指向上一個和下一個節點的數據和引用。 Java提供了LinkedList實現– java.util.LinkedList <T>,該實現與雙向鏈表一起使用。 此類從AbstractList類繼承,并實現List <T>和Deque <T>接口。 在本快速教程中,我們將學習如何使用Java中的LinkedList類。
構造一個
我們可以通過以下方式之一實例化Java中的鏈表:
Java
LinkedList<Integer> intList = new LinkedList<>();LinkedList<Integer> intList1 = new LinkedList<>(intList);即此類提供了兩個構造函數:
- LinkedList():創建一個空的鏈表
- LinkedList(Collection c):創建一個鏈表,并以c的內容為其元素對其進行初始化
添加元素:
要將元素添加到LinkedList ,我們可以使用List <T>接口中add()方法的風格。 我們還可以使用addFirst()或addLast()將元素分別添加到開頭或結尾。
Java
intList.add(1); // [1] intList.addFirst(2); // [2, 1] intList.addLast(3); // [2, 1, 3]刪除元素:
同樣,要刪除項目,我們可以從List接口使用remove(index),remove(obj)方法。 否則,我們也可以選擇removeFirst()或removeLast()方法:
Java
int firstElement = intList.removeFirst(); int lastElement = intList.removeLast();這些方法既刪除又返回刪除的值。
Java LinkedList類還提供removeFirstOccurrence(Object obj)和removeLastOccurrence(Object obj)方法,以分別刪除給定值的第一次出現和最后一次出現。 如果列表中不存在此類值,則這些方法將返回false 。
boolean removed = intList.removeFirstOccurrence(1);查詢元素:
LinkedList類中有getFirst()和getLast()方法,用于查詢鏈接列表的第一個或最后一個元素:
Java
int firstElement = intList.getFirst(); int lastElement = intList.getLast();由于這是一個雙向鏈接的列表實現,因此getFirst()和getLast()都是恒定時間操作。
如果我們知道要檢索的元素的索引,則還可以使用List接口的get(int index)方法:
Java
int elementAtIndex1 = intList.get(1);遍歷
就像其他任何形式的列表一樣,我們將遍歷鏈接列表:
Java
//Using a for loop for(int num : intList) {System.out.println(num); }//Using iterator ListIterator itr = intList.listIterator(); while(itr.hasNext()) {System.out.println(itr.next()); }//Using forEach construct intList.forEach( value -> System.out.println(value); );讓我們概述一下Java LinkedList和ArrayList類之間的區別:
| 使用雙向鏈接列表表示 | 使用動態數組的概念 |
| 實現兩個列表 和德克 介面 | 只實施清單 接口 |
| 不適合隨機訪問 | 非常適合隨機訪問。 如果我們知道索引,則只需要O(1)時間即可檢索 |
| 在Java鏈表的開頭和結尾處進行O(1)插入/刪除 | 將元素插入ArrayList可能會導致調整后備數組的大小,因此攤銷成本為O(n)。 同樣,在ArrayList的開頭插入將需要我們將所有元素向右移動一個位置。 |
| 存儲對上一個和下一個節點的引用的內存開銷 | 無需存儲其他信息 |
隨意在本文中了解有關ArrayList的更多信息。 Java LinkedList中還提供了從List <T>接口繼承的ArrayList類中的所有方法。
結論:
在本快速教程中,我們探討了Java LinkedList類的一些最受歡迎的方法。 我們還介紹了Java ArrayList和LinkedList之間的區別。
成為第一個發表評論的人。
翻譯自: https://www.javacodegeeks.com/2019/03/linkedlist-java.html
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的Java中的LinkedList的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: GitHub上的OpenJDK
- 下一篇: 供给的变动引起什么 什么是供给变动