您好,登錄后才能下訂單哦!
本篇內容介紹了“ArrayList與Vector的異同點有哪些”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
ArrayList VS Vector
相同點: 1>都是基于Object數組實現的。 2>都允許添加null元素。 不同點: 1>ArrayList不是線程安全的,Vector是線程安全的(方法是Synchronized的)。 2>ArrayList擴容后容量變為之前的1.5倍,Vector擴容后容量是之前的2倍,故ArrayList更省空間。 容量: ArrayList 初始容量:0 擴容:第一次(調用add方法時)擴展為10,之后每次擴展為之前的1.5倍。 說明: 1>雖然ArrayList類的初始容量默認為10(private static final int DEFAULT_CAPACITY = 10;) 2>但實際上在new ArrayList()后,ArrayList的elementData(transient Object[] elementData;)的length為0 3>在第一次調用add方法時,elementData的length才擴展到10 4>若之后還需要擴展容量時,容量每次擴展為之前的1.5倍 代碼: 1>無參構造方法: this.elementData = DEFAULTCAPACITY_EMPTY_ELEMENTDATA; // private static final Object[] DEFAULTCAPACITY_EMPTY_ELEMENTDATA = {}; 2>擴容1.5倍: newCapacity = oldCapacity + (oldCapacity >> 1); 3>擴容時對數組進行復制: elementData = Arrays.copyOf(elementData, newCapacity); Vector 初始容量:10 擴容:每次擴展為之前的2倍。 代碼: 1>無參構造方法: this(10); 2>擴容2倍: int newCapacity = oldCapacity + ((capacityIncrement > 0) ? capacityIncrement : oldCapacity); // capacityIncrement默認為0 3>擴容時對數組進行復制: elementData = Arrays.copyOf(elementData, newCapacity);
ArrayList VS LinkedList
相同點: 1>都允許添加null元素。 不同點: 1>對于隨機訪問get和set,ArrayList比LinkedList快。 2>對于插入和刪除操作,LinkedList比較快。
相關集合:
1)Collections.synchronizedList(List list) 舉例: List<String> syncArraylist = Collections.synchronizedList(new ArrayList<String>()); List<String> syncLinkedList = Collections.synchronizedList(new LinkedList<String>()); 說明: 1>Collections.synchronizedList(List list)實際上是創建了一個java.util.Collections的內部類SynchronizedList。 2>SynchronizedList只是在自己的方法中使用同步代碼塊將List(封裝的ArrayList、linkedList等)里相應的方法包裹了起來,故SynchronizedList的擴容方式同它封裝的list一樣。 3>SynchronizedList還可以指定鎖對象,如不指定,默認為this。 2)CopyOnWriteArrayList: 1>使用ReentrantLock來實現線程的同步。 2>每添加一個元素,就進行一次數組的copy,故CopyOnWriteArrayList的寫性能非常的糟糕。 3>多線程環境下,CopyOnWriteArrayList的讀性能比Collections.SynchronizedList的讀性能好一些(后者的get方法也被同步代碼塊包裹了,故讀性能稍差一點)。 3)Stack繼承自Vector,新增了push、pop方法。
“ArrayList與Vector的異同點有哪些”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。