<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                # Java 中的`LinkedList` > 原文: [https://beginnersbook.com/2013/12/linkedlist-in-java-with-example/](https://beginnersbook.com/2013/12/linkedlist-in-java-with-example/) 與 Java 中的數組類似,`LinkedList`是線性數據結構。但是,`LinkedList`元素不存儲在像數組這樣的連續位置中,它們使用指針相互鏈接。`LinkedList`的每個元素都具有指向`LinkedList`的下一個元素的引用(地址/指針)。 ### 目錄 1. [LinkedList 表示](#linkedlist) 2. [為什么我們需要一個鏈表?](#why) 3. [Java 中 LinkedList 類的層次結構](#hierarchy) 4. [Java 鏈表添加元素的例子](#add) 5. [Java 鏈表示例刪除元素](#remove) 6. [Java 中的 LinkedList 示例](#example) 7. [LinkedList 類的方法](#methods) 8. [關于 LinkedList 的教程](#tutorials) ] - LinkedList 類的所有方法都在單獨的教程中詳細介紹 ## `LinkedList`表示 `LinkedList`中的每個元素稱為**節點**。`LinkedList`的每個節點包含兩個項目:1)元素的內容 2)指向鏈表中的下一節點的指針/地址/引用。 **這就是`LinkedList`的樣子:** ![Java LinkedList](https://img.kancloud.cn/d7/77/d777d1ae43b08d03f3e20e557575793a_743x250.jpg) **注意:** 1. `LinkedList`的頭僅包含`List`的第一個元素的地址。 2. `LinkedList`的最后一個元素在節點的指針部分包含`null`,因為它是`List`的結尾,因此它不指向任何內容,如上圖所示。 3. 上圖所示的圖表示**單鏈表**。`LinkedList`的另一種復雜類型變體稱為**雙向鏈表**,雙向鏈表的節點包含三部分:1)指向鏈表的前一節點的指針,2)元素的內容,3)指向鏈表的下一個節點的指針。 ## 為什么我們需要鏈表? 你必須知道數組也是一個線性數據結構,但**數組有一些限制,如: 1)數組的大小是固定的**這是我們決定的創建一個數組,因此很難預先預測元素的數量,如果聲明的大小不足,那么我們就不能增加數組的大小,如果我們聲明一個大型數組并且不需要存儲那么多的元素那么它是浪費記憶。 2)數組元素**需要連續的存儲單元**來存儲它們的值。 3)**在數組中插入一個元素是性能上昂貴的**,因為我們必須移動幾個元素來為新元素騰出空間。例如: 假設我們有一個具有以下元素的數組:`10,12,15,20,4,5,100`,現在如果我們想要在具有值 12 的元素之后插入新元素 99 那么我們必須將 12 之后的所有元素移到右邊,為新元素騰出空間。 類似地,**從數組中刪除元素**也是性能上昂貴的操作,因為刪除元素之后的所有元素都必須向左移位。 **通過提供以下功能在鏈表中處理這些限制:** 1. 鏈表允許**動態內存分配**,這意味著內存分配在運行時由編譯器完成在鏈表聲明中我們不需要提及列表的大小。 2. 鏈表元素**不需要連續的存儲單元**,因為元素使用包含列表的下一個節點的地址的節點的引用部分相互鏈接。 3. 在鏈表中插入和刪除操作的性能并不昂貴,因為從鏈表中添加和刪除元素不需要元素移位,只需要更改前一個節點和下一個節點的指針。 ## Java 中的`LinkedList`類的層次結構 ![Java Linked list class hierarchy](https://img.kancloud.cn/9b/03/9b03dab6f00f6fbd6e5a24d13da13727_600x499.jpg) ## Java `LinkedList`添加元素的示例 在下面的例子中,我們使用`add()`,`addFirst()`和`addLast()`方法在`LinkedList`中的所需位置添加元素,`LinkedList`類中有幾個這樣有用的方法,我在本文末尾提到過文章。 ```java package com.beginnersbook; import java.util.*; public class JavaExample{ public static void main(String args[]){ LinkedList<String> list=new LinkedList<String>(); //Adding elements to the Linked list list.add("Steve"); list.add("Carl"); list.add("Raj"); //Adding an element to the first position list.addFirst("Negan"); //Adding an element to the last position list.addLast("Rick"); //Adding an element to the 3rd position list.add(2, "Glenn"); //Iterating LinkedList Iterator<String> iterator=list.iterator(); while(iterator.hasNext()){ System.out.println(iterator.next()); } } } ``` **輸出:** ![Java LinkedList adding elements](https://img.kancloud.cn/12/70/12707eb29196f1e8a4414286c6326c4d_312x298.jpg) ## 從`LinkedList`中刪除元素的 Java 示例 在下面的示例中,我們將檢查`LinkedList`中用于從`LinkedList`中的某些位置刪除元素的幾個流行的**刪除方法**。這些方法的詳細說明以及示例將在單獨的教程中介紹,本文末尾提供了鏈接。 ```java package com.beginnersbook; import java.util.*; public class JavaExample{ public static void main(String args[]){ LinkedList<String> list=new LinkedList<String>(); //Adding elements to the Linked list list.add("Steve"); list.add("Carl"); list.add("Raj"); list.add("Negan"); list.add("Rick"); //Removing First element //Same as list.remove(0); list.removeFirst(); //Removing Last element list.removeLast(); //Iterating LinkedList Iterator<String> iterator=list.iterator(); while(iterator.hasNext()){ System.out.print(iterator.next()+" "); } //removing 2nd element, index starts with 0 list.remove(1); System.out.print("\nAfter removing second element: "); //Iterating LinkedList again Iterator<String> iterator2=list.iterator(); while(iterator2.hasNext()){ System.out.print(iterator2.next()+" "); } } } ``` **輸出:** ![Java LinkedList removing elements](https://img.kancloud.cn/39/a1/39a116babe78d8406cd8172f4dda7ac1_676x192.jpg) ## Java 中的`LinkedList`示例 ```java import java.util.*; public class LinkedListExample { public static void main(String args[]) { /* Linked List Declaration */ LinkedList<String> linkedlist = new LinkedList<String>(); /*add(String Element) is used for adding * the elements to the linked list*/ linkedlist.add("Item1"); linkedlist.add("Item5"); linkedlist.add("Item3"); linkedlist.add("Item6"); linkedlist.add("Item2"); /*Display Linked List Content*/ System.out.println("Linked List Content: " +linkedlist); /*Add First and Last Element*/ linkedlist.addFirst("First Item"); linkedlist.addLast("Last Item"); System.out.println("LinkedList Content after addition: " +linkedlist); /*This is how to get and set Values*/ Object firstvar = linkedlist.get(0); System.out.println("First element: " +firstvar); linkedlist.set(0, "Changed first item"); Object firstvar2 = linkedlist.get(0); System.out.println("First element after update by set method: " +firstvar2); /*Remove first and last element*/ linkedlist.removeFirst(); linkedlist.removeLast(); System.out.println("LinkedList after deletion of first and last element: " +linkedlist); /* Add to a Position and remove from a position*/ linkedlist.add(0, "Newly added item"); linkedlist.remove(2); System.out.println("Final Content: " +linkedlist); } } ``` 輸出: ```java Linked List Content: [Item1, Item5, Item3, Item6, Item2] LinkedList Content after addition: [First Item, Item1, Item5, Item3, Item6, Item2, Last Item] First element: First Item First element after update by set method: Changed first item LinkedList after deletion of first and last element: [Item1, Item5, Item3, Item6, Item2] Final Content: [Newly added item, Item1, Item3, Item6, Item2] ``` ## `LinkedList`類的方法: > 這里我已經提到了`LinkedList`方法的簡要說明,我已經在單獨的教程中介紹了這些方法中的每一個,本文末尾提供了鏈接。 對于以下方法中的所有示例,請將`llistobj`視為`LinkedList&lt;String&gt;`的參考。 `LinkedList<String>?llistobj ?= new LinkedList<String>();` 1) `boolean add(Object item)`:它在列表的末尾添加項目。 ```java llistobj.add("Hello"); ``` 它會在鏈表的末尾添加字符串`"Hello"`。 2) `void add(int index, Object item)`:它在列表的給定索引處添加一個項目。 ```java llistobj.add(2, "bye"); ``` 這將在第 3 個位置添加字符串`"bye"`(索引 2 是第 3 個位置,因為索引從 0 開始)。 3) `boolean addAll(Collection c)`:它將指定集合`c`的所有元素添加到列表中。如果指定的集合為`null`,則拋出`NullPointerException`。考慮下面的例子 - ```java LinkedList<String> llistobj = new LinkedList<String>(); ArrayList<String> arraylist= new ArrayList<String>(); arraylist.add("String1"); arraylist.add("String2"); llistobj.addAll(arraylist); ``` 這段代碼會將`ArrayList`的所有元素添加到`LinkedList`中。 4)`boolean addAll(int index, Collection c)`:它將集合`c`的所有元素從列表中的給定索引開始添加到列表中。如果集合`c`為`null`,則拋出`NullPointerException`;如果指定的索引超出范圍,則拋出`IndexOutOfBoundsException`。 ```java llistobj.add(5, arraylist); ``` 它會將`ArrayList`的所有元素從位置 6(索引 5)開始添加到`LinkedList`。 5)`void addFirst(Object item)`:它在列表的第一個位置添加項(或元素)。 ```java llistobj.addFirst("text"); ``` 它會在列表的開頭添加字符串`"text"`。 6)`void addLast(Object item)`:它在列表的末尾插入指定的項目。 ```java llistobj.addLast("Chaitanya"); ``` 該語句將在鏈表的末尾添加一個字符串`"Chaitanya"`。 7) `void clear()`:刪除列表中的所有元素。 ```java llistobj.clear(); ``` 8)`Object clone()`:返回列表的副本。 對于例如我的`linkedList`有四個項目:`text1`,`text2`,`text3`和`text4`。 ```java Object str= llistobj.clone(); System.out.println(str); ``` 輸出:上面代碼的輸出是: ```java [text1,text2,text3,text4] ``` 9) `boolean contains(Object item)`:它檢查給定項是否存在于列表中。如果該項目存在,則返回`true`,否則返回`false`。 ```java boolean var = llistobj.contains("TestString"); ``` 它將檢查列表中是否存在字符串`"TestString"`。 10) `Object get(int index)`:從列表中返回指定索引的項。 ```java Object var = llistobj.get(2); ``` 它將從列表中獲取第 3 個項目。 11) `Object getFirst()`:從列表中取出第一個項目。 ```java Object var =?llistobj.getFirst(); ``` 12)`Object getLast()`:從列表中取出最后一項。 ```java Object var= llistobj.getLast(); ``` 13)`int indexOf(Object item)`:返回指定項的索引。 ```java llistobj.indexOf("bye"); ``` 14)`int lastIndexOf(Object item)`:返回指定元素最后一次出現的索引。 ```java int pos = llistobj.lastIndexOf("hello); ``` 整數變量`pos`將具有最后一次出現的字符串`"hello"`的索引。 15)`Object poll()`:它返回并刪除列表的第一項。 ```java Object o = llistobj.poll(); ``` 16)`Object pollFirst()`:與`poll()`方法相同。刪除列表中的第一項。 ```java Object o = llistobj.pollFirst(); ``` 17)`Object pollLast()`:返回并刪除列表的最后一個元素。 ```java Object o = llistobj.pollLast(); ``` 18)`Object remove()`:刪除列表的第一個元素。 ```java llistobj.remove(); ``` 19)`Object remove(int index)`:它從列表中刪除指定索引處的項目。 ```java llistobj.remove(4); ``` 它將從列表中刪除第 5 個元素。 20)`Object remove(Object obj)`:從列表中刪除指定的對象。 ```java llistobj.remove("Test Item"); ``` 21)`Object removeFirst()`:它從列表中刪除第一個項目。 ```java llistobj.removeFirst(); ``` 22)`Object removeLast()`:刪除列表的最后一項。 ```java llistobj.removeLast(); ``` 23)`Object removeFirstOccurrence(Object item)`:刪除指定項的第一次出現。 ```java llistobj.removeFirstOccurrence("text"); ``` 它將從列表中刪除第一次出現的字符串`"text"`。 24)`Object removeLastOccurrence(Object item)`:刪除給定元素的最后一次出現。 ```java llistobj.removeLastOccurrence("String1); ``` 它將刪除最后一次出現的字符串`"String1"`。 25)`Object set(int index, Object item)`:用賦值更新指定索引的項。 ```java llistobj.set(2, "Test"); ``` 它將使用字符串`"Test"`更新第 3 個元素。 26) `int size()`:返回列表元素的數量。 ```java llistobj.size(); ``` ## `LinkedList`教程 以下是我在`LinkedList`上分享的教程。 #### `LinkedList`基礎知識 * [如何迭代`LinkedList`](https://beginnersbook.com/2013/12/how-to-loop-linkedlist-in-java/) #### 添加/刪除 * [向`LinkedList`添加元素](https://beginnersbook.com/2014/08/adding-an-element-to-linkedlist-using-adde-e-method-java/) * [在`LinkedList`中的特定索引處添加元素](https://beginnersbook.com/2014/07/java-add-element-at-specific-index-in-linkedlist-example/) * [在`LinkedList`的開頭和結尾添加元素](https://beginnersbook.com/2014/07/java-add-elements-at-beginning-and-end-of-linkedlist-example/) * [在`LinkedList`的前面添加一個元素](https://beginnersbook.com/2014/08/adding-element-to-front-of-linkedlist-in-java/) * [從`LinkedList`中刪除第一個和最后一個元素](https://beginnersbook.com/2014/07/java-remove-first-and-last-element-from-linkedlist-example/) * [從特定索引中刪除元素](https://beginnersbook.com/2014/07/java-remove-element-from-a-specific-index-in-linkedlist-example/) * [從`LinkedList`中刪除指定的元素](https://beginnersbook.com/2014/07/java-remove-specific-elements-from-linkedlist-example/) * [從`LinkedList`中刪除所有元素](https://beginnersbook.com/2014/07/java-remove-all-elements-from-linkedlist-example/) * [將`List`的所有元素附加到`LinkedList`](https://beginnersbook.com/2014/08/append-all-the-elements-of-a-list-to-linkedlist-java/) #### 獲取/搜索 * [從`LinkedList`獲取第一個和最后一個元素](https://beginnersbook.com/2014/07/java-get-first-and-last-elements-from-linkedlist-example/) * [從`LinkedList`的特定索引中獲取元素](https://beginnersbook.com/2014/07/java-get-element-from-specific-index-of-linkedlist-example/) * [`LinkedList`中搜索元素](https://beginnersbook.com/2014/07/java-search-elements-in-linkedlist-example/) * [獲取`LinkedList`的子列表](https://beginnersbook.com/2014/07/java-get-sub-list-from-linkedlist-example/) #### `Iterator`/`ListIterator` * [`LinkedList Iterator`示例](https://beginnersbook.com/2014/07/java-linkedlist-iterator-example/) * [`LinkedList ListIterator`示例](https://beginnersbook.com/2014/07/java-linkedlist-listiterator-example/) * [以反向順序迭代鏈表](https://beginnersbook.com/2014/08/iterate-a-linkedlist-in-reverse-sequential-order-java/) #### 其他教程 * [用新值替換`LinkedList`中的元素](https://beginnersbook.com/2014/07/java-replace-element-in-a-linkedlist-example/) * [檢查`LinkedList`中是否存在特定元素](https://beginnersbook.com/2014/07/java-check-if-a-particular-element-exists-in-linkedlist-example/) * [將`LinkedList`克隆到另一個`LinkedList`](https://beginnersbook.com/2014/08/clone-a-generic-linkedlist-in-java/) * [獲取`LinkedList`中元素的最后一次出現的索引](https://beginnersbook.com/2014/08/java-get-the-index-of-last-occurrence-of-an-element-in-linkedlist/) * [`LinkedList push()`和`pop()`方法](https://beginnersbook.com/2014/08/linkedlist-push-and-pop-methods-java/) * [`LinkedList poll()`,`pollFirst()`和 `pollLast()`方法](https://beginnersbook.com/2014/08/java-linkedlist-poll-pollfirst-and-polllast-methods/) * [`LinkedList peek()`,`peekFirst()`和` peekLast()`方法](https://beginnersbook.com/2014/08/java-linkedlist-peek-peekfirst-and-peeklast-methods/) #### 轉換 * [將`LinkedList`轉換為`ArrayList`](https://beginnersbook.com/2014/07/java-convert-a-linkedlist-to-arraylist/) * [將`LinkedList`轉換為數組](https://beginnersbook.com/2014/07/how-to-convert-linkedlist-to-array-using-toarray-in-java/) #### 差異 * [`LinkedList` vs `ArrayList`](https://beginnersbook.com/2013/12/difference-between-arraylist-and-linkedlist-in-java/) #### 參考 * [`LinkedList`文檔](https://docs.oracle.com/javase/7/docs/api/java/util/LinkedList.html)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看