<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`和`Vector`之間的區別 > 原文: [https://beginnersbook.com/2013/12/difference-between-arraylist-and-vector-in-java/](https://beginnersbook.com/2013/12/difference-between-arraylist-and-vector-in-java/) [`ArrayList`](https://beginnersbook.com/2013/12/java-arraylist/)和[`Vector`](https://beginnersbook.com/2013/12/vector-in-java/) 都在內部使用數組作為數據結構。但是,它們存儲和處理數據的方式幾乎沒有差異。在這篇文章中,我們將討論`ArrayList`和`Vector`之間的差異和相似之處。 ## `ArrayList` Vs `Vector`: 1)**同步**:`ArrayList`是非同步的,這意味著多個線程可以同時在`ArrayList`上工作。對于例如如果一個線程正在對`ArrayList`執行添加操作,則可能有另一個線程在多線程環境中同時對`ArrayList`執行刪除操作 `Vector`同步。這意味著如果一個線程正在處理`Vector`,則沒有其他線程可以獲取它。與`ArrayList`不同,一次只有一個線程可以對向量執行操作。 2)**調整大小:**`ArrayList`和`Vector`都可以動態增長和縮小以保持存儲的最佳使用,但是它們調整大小的方式是不同的。調整大小時,`ArrayList`的大小增加一半,而增長時,`Vector`默認大小增加一倍。 3)**性能**:`ArrayList`提供更好的性能,因為它是非同步的。向量操作性能較差,因為它們是線程安全的,在`Vector`上工作的線程會對其進行鎖定,這使得其他線程等待直到鎖定被釋放。 4)**快速失敗**:首先讓我解釋什么是快速失敗:如果集合(`ArrayList`,`vector`等)通過任何方式進行結構修改,除了**添加或刪除方法**,在創建迭代器后,迭代器將拋出[`ConcurrentModificationException`](https://docs.oracle.com/javase/6/docs/api/java/util/ConcurrentModificationException.html)。結構修改是指從集合中添加或刪除元素。 根據[`Vector` javadoc](https://docs.oracle.com/javase/7/docs/api/java/util/Vector.html "javadoc"),`Vector`返回的迭代器不是快速失敗的。另一方面,`ArrayList`返回的`iterator`和`listIterator`是快速失??敗的。 5)**誰真的屬于集合框架?** 該向量不是集合框架的一部分,它已被包含在集合中。它可以被視為舊版代碼。`Vector`沒有任何`List`集合不能做的內容。因此應避免使用`Vector`。如果需要線程安全操作,則使`ArrayList`同步,如本文下一節所述,或者使用[`CopyOnWriteArrayList`](https://docs.oracle.com/javase/7/docs/api/java/util/concurrent/CopyOnWriteArrayList.html),它是`ArrayList`的線程安全變體。 這些類之間的**相似性很少,如下所示:** 1. `Vector`和`ArrayList`都使用可擴展的數組數據結構。 2. 這些類(`Vector`和`ArrayList`)返回的迭代器和`listIterator`是快速失??敗的。 3. 它們都是有序的集合類,因為它們維護元素的插入順序。 4. 向量和`ArrayList`都允許重復和空值。 5. 當溢出和刪除發生時,它們會自動增長和縮小。 ### 何時使用`ArrayList`以及何時使用`Vector`? 這完全取決于要求。如果需要執行“線程安全”操作,則向量是最好的選擇,因為它確保一次只有一個線程訪問集合。 **性能:**同步操作比非同步操作消耗更多時間,因此如果不需要線程安全操作,`ArrayList`是更好的選擇,因為并發進程會提高性能。 **如何使`ArrayList`同步?** 如上所述,`ArrayList`方法是非同步的,但如果有需要,你可以讓它們像這樣同步 - ```java //Use Collecions.synzhonizedList method List list = Collections.synchronizedList(new ArrayList()); ... //If you wanna use iterator on the synchronized list, use it //like this. It should be in synchronized block. synchronized (list) { Iterator iterator = list.iterator(); while (iterator.hasNext()) ... iterator.next(); ... } ``` #### 參考: * [`Vector`文檔](https://docs.oracle.com/javase/6/docs/api/java/util/Vector.html) * [`ArrayList`文檔](https://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.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>

                              哎呀哎呀视频在线观看