<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 中`ArrayList`和`LinkedList`之間的區別 > 原文: [https://javatutorial.net/difference-between-arraylist-and-linkedlist-in-java](https://javatutorial.net/difference-between-arraylist-and-linkedlist-in-java) 本文介紹了[`ArrayList`](https://javatutorial.net/java-arraylist-example)和[`LinkedList`](https://javatutorial.net/java-linkedlist-example)之間的區別,在這種情況下,我們應該優先選擇一個。 由于繼承了相同的接口 – `List`,因此`ArrayList`和`LinkedList`共享相同的屬性。 但是`ArrayList`和`LinkedList`有什么區別? 簡單地說 – `ArrayList`對于一次寫入多次讀取操作很有用,但不利于從前端或中間進行添加/刪除。 另一方面,`LinkedList`更適合插入和刪除數據。 ## 性能表現 下表通過對`LinkedList`和`ArrayList`執行不同的操作來顯示平均算法復雜度 ![ArrayList vs. LinkedList operations complexity](https://img.kancloud.cn/40/ea/40eaf8dc4beb6767ddcdca1a9e89dc78_760x490.jpg) `ArrayList`與`LinkedList`操作的復雜度 ## [`ArrayList`](https://javatutorial.net/java-arraylist-example)與[`LinkedList`](https://javatutorial.net/java-linkedlist-example)性能示例 下面的示例演示使用`ArrayList`和`LinkedList`上的相同數據進行`add`,`set`和`remove`操作的性能 ```java package javatutorial.net; import java.util.ArrayList; import java.util.LinkedList; import java.util.List; public class ArrayListVsLinkedListExample { private static final int ELCOUNT = 50000; public static void main(String[] args) { List<String> alist = new ArrayList<String>(); List<String> llist = new LinkedList<String>(); // Insertion //////////////// // ArrayList long start = System.currentTimeMillis(); for (int i = 0; i < ELCOUNT; i++) { alist.add("element #" + i); } long totalTimeMs = System.currentTimeMillis() - start; System.out.println("Adding 50K elements in ArrayList took " + totalTimeMs + " ms"); // LinkedList start = System.currentTimeMillis(); for (int i = 0; i < ELCOUNT; i++) { llist.add("element #" + i); } totalTimeMs = System.currentTimeMillis() - start; System.out.println("Adding 50K elements in LinkedList took " + totalTimeMs + " ms"); // Modification ///////////// // ArrayList start = System.currentTimeMillis(); for (int i = 0; i < ELCOUNT; i++) { alist.set(i, "modified element #" + i); } totalTimeMs = System.currentTimeMillis() - start; System.out.println("Modifying 50K elements in ArrayList took " + totalTimeMs + " ms"); // LinkedList start = System.currentTimeMillis(); for (int i = 0; i < ELCOUNT; i++) { llist.set(i, "modified element #" + i); } totalTimeMs = System.currentTimeMillis() - start; System.out.println("Modifying 50K elements in LinkedList took " + totalTimeMs + " ms"); // Removal ////////////////// System.out.println("ArrayList size before removal " + alist.size()); System.out.println("LinkedList size before removal " + llist.size()); // ArrayList start = System.currentTimeMillis(); for (int i = 0; i < ELCOUNT; i++) { alist.remove(0); } totalTimeMs = System.currentTimeMillis() - start; System.out.println("Removing 50K elements in ArrayList took " + totalTimeMs + " ms"); // LinkedList start = System.currentTimeMillis(); for (int i = 0; i < ELCOUNT; i++) { llist.remove(0); } totalTimeMs = System.currentTimeMillis() - start; System.out.println("Removing 50K elements in LinkedList took " + totalTimeMs + " ms"); System.out.println("ArrayList size after removal " + alist.size()); System.out.println("LinkedList size after removal " + llist.size()); } } ``` 這是執行示例代碼的輸出。 結果將因不同的計算機配置而異 ```java Adding 50K elements in ArrayList took 10 ms Adding 50K elements in LinkedList took 7 ms Modifying 50K elements in ArrayList took 7 ms Modifying 50K elements in LinkedList took 6315 ms ArrayList size before removal 50000 LinkedList size before removal 50000 Removing 50K elements in ArrayList took 135 ms Removing 50K elements in LinkedList took 4 ms ArrayList size after removal 0 LinkedList size after removal 0 ``` 如您在上面的輸出中看到的: * `LinkedList`在訪問和修改元素方面明顯較慢 * `LinkedList`添加元素的速度較慢 * `LinkedList`從列表開頭刪除元素的速度要快得多 * `ArrayList`插入新元素的速度較慢 * `ArrayList`在訪問和修改元素方面明顯更快 * `ArrayList`從列表開頭刪除元素的速度明顯較慢 ## 結論 在所有情況下,算法復雜度和運算性能都不是恒定的。 您必須考慮兩個主要因素 - 列表的大小以及我們使用的元素在列表中的放置位置(在開頭,中間或結尾)。 唯一不變的規則是:如果要更快地檢索元素,請使用`ArrayList`,如果要更快地處理數據,請使用`LinkedList`。
                  <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>

                              哎呀哎呀视频在线观看