<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>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # Java 中`ArrayList`和`LinkedList`的區別 > 原文: [https://beginnersbook.com/2013/12/difference-between-arraylist-and-linkedlist-in-java/](https://beginnersbook.com/2013/12/difference-between-arraylist-and-linkedlist-in-java/) [`ArrayList`](https://beginnersbook.com/2013/12/java-arraylist/)和[`LinkedList`](https://beginnersbook.com/2013/12/linkedlist-in-java-with-example/)都實現了`List`接口,它們的方法和結果幾乎相同。然而,它們之間幾乎沒有差異,這取決于要求,使一個優于另一個。 ## `ArrayList`與`LinkedList` 1)**搜索**:與`LinkedList`搜索操作相比,`ArrayList`搜索操作非常快。`ArrayList`中的`get(int index)`給出`O(1)`的性能,而`LinkedList`性能為`O(n)`。 原因:`ArrayList`維護其元素的基于索引的系統,因為它隱式使用數組數據結構,這使得搜索列表中的元素更快。另一方面,`LinkedList`實現了**雙向鏈表**,它需要遍歷所有元素來搜索元素。 2)**刪除**:`LinkedList`刪除操作給出`O(1)`性能,而`ArrayList`提供可變性能:在最壞的情況下`O(n)`(刪除第一個元素)和在最好的情況下`O(1)`(刪除最后一個元素)。 結論:與`ArrayList`相比,`LinkedList`元素刪除更快。 原因:`LinkedList`的每個元素都維護著兩個指針(地址),這些指針指向列表中的兩個鄰居元素。因此,移除僅需要改變將要移除的節點的兩個相鄰節點(元素)中的指針位置。在`ArrayList`中,需要移動所有元素以填充由要移除的元素創建的空間。 3)**插入性能**:`LinkedList add`方法給出`O(1)`性能,而`ArrayList`在最壞情況下給出`O(n)`。原因與刪除說明相同。 4)**內存開銷**:`ArrayList`維護索引和元素數據,而`LinkedList`維護元素數據和相鄰節點的兩個指針,因此`LinkedList`中的內存消耗比較高。 這些類之間的**相似性很少,如下所示:** 1. `ArrayList`和`LinkedList`都是`List`接口的實現。 2. 它們都維護元素的插入順序,這意味著在顯示`ArrayList`和`LinkedList`元素時,結果集將具有將元素插入`List`的相同順序。 3. 這兩個類都是非同步的,可以使用[`Collections.synchronizedList`](https://docs.oracle.com/javase/6/docs/api/java/util/Collections.html#synchronizedList(java.util.List))方法顯式同步。 4. 這些類返回的迭代器和`listIterator`是快速失??敗的(如果在創建迭代器之后的任何時候對列表進行結構修改,除非通過迭代器自己的`remove`或`add`方法,迭代器將拋出 [`ConcurrentModificationException`](https://docs.oracle.com/javase/6/docs/api/java/util/ConcurrentModificationException.html))。 ### 何時使用`LinkedList`以及何時使用`ArrayList`? 1)如上所述,與 ArrayList(`O(n)`)相比,`insertList`和`remove`操作在`LinkedList`中提供了良好的性能(`O(1)`)。因此,如果在應用中需要頻繁添加和刪除,則`LinkedList`是最佳選擇。 2)搜索(`get`方法)操作在`Arraylist`(`O(1)`)中很快但在`LinkedList`(`O(n)`中)沒有,因此如果添加和刪除操作較少且搜索操作要求較多,則`ArrayList`將是您最好的選擇。 #### 參考: * [`ArrayList`文檔](https://docs.oracle.com/javase/1.5.0/docs/api/java/util/ArrayList.html) * [`LinkedList` Javadoc](https://docs.oracle.com/javase/6/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>

                              哎呀哎呀视频在线观看