本篇內(nèi)容介紹了“ArrayList與Vector的異同點(diǎn)有哪些”的有關(guān)知識(shí),在實(shí)際案例的操作過(guò)程中,不少人都會(huì)遇到這樣的困境,接下來(lái)就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!
讓客戶(hù)滿(mǎn)意是我們工作的目標(biāo),不斷超越客戶(hù)的期望值來(lái)自于我們對(duì)這個(gè)行業(yè)的熱愛(ài)。我們立志把好的技術(shù)通過(guò)有效、簡(jiǎn)單的方式提供給客戶(hù),將通過(guò)不懈努力成為客戶(hù)在信息化領(lǐng)域值得信任、有價(jià)值的長(zhǎng)期合作伙伴,公司提供的服務(wù)項(xiàng)目有:主機(jī)域名、虛擬空間、營(yíng)銷(xiāo)軟件、網(wǎng)站建設(shè)、鐘祥網(wǎng)站維護(hù)、網(wǎng)站推廣。
ArrayList VS Vector
相同點(diǎn): 1>都是基于Object數(shù)組實(shí)現(xiàn)的。 2>都允許添加null元素。 不同點(diǎn): 1>ArrayList不是線程安全的,Vector是線程安全的(方法是Synchronized的)。 2>ArrayList擴(kuò)容后容量變?yōu)橹暗?.5倍,Vector擴(kuò)容后容量是之前的2倍,故ArrayList更省空間。 容量: ArrayList 初始容量:0 擴(kuò)容:第一次(調(diào)用add方法時(shí))擴(kuò)展為10,之后每次擴(kuò)展為之前的1.5倍。 說(shuō)明: 1>雖然ArrayList類(lèi)的初始容量默認(rèn)為10(private static final int DEFAULT_CAPACITY = 10;) 2>但實(shí)際上在new ArrayList()后,ArrayList的elementData(transient Object[] elementData;)的length為0 3>在第一次調(diào)用add方法時(shí),elementData的length才擴(kuò)展到10 4>若之后還需要擴(kuò)展容量時(shí),容量每次擴(kuò)展為之前的1.5倍 代碼: 1>無(wú)參構(gòu)造方法: this.elementData = DEFAULTCAPACITY_EMPTY_ELEMENTDATA; // private static final Object[] DEFAULTCAPACITY_EMPTY_ELEMENTDATA = {}; 2>擴(kuò)容1.5倍: newCapacity = oldCapacity + (oldCapacity >> 1); 3>擴(kuò)容時(shí)對(duì)數(shù)組進(jìn)行復(fù)制: elementData = Arrays.copyOf(elementData, newCapacity); Vector 初始容量:10 擴(kuò)容:每次擴(kuò)展為之前的2倍。 代碼: 1>無(wú)參構(gòu)造方法: this(10); 2>擴(kuò)容2倍: int newCapacity = oldCapacity + ((capacityIncrement > 0) ? capacityIncrement : oldCapacity); // capacityIncrement默認(rèn)為0 3>擴(kuò)容時(shí)對(duì)數(shù)組進(jìn)行復(fù)制: elementData = Arrays.copyOf(elementData, newCapacity);
ArrayList VS LinkedList
相同點(diǎn): 1>都允許添加null元素。 不同點(diǎn): 1>對(duì)于隨機(jī)訪問(wèn)get和set,ArrayList比LinkedList快。 2>對(duì)于插入和刪除操作,LinkedList比較快。
相關(guān)集合:
1)Collections.synchronizedList(List list) 舉例: ListsyncArraylist = Collections.synchronizedList(new ArrayList ()); List syncLinkedList = Collections.synchronizedList(new LinkedList ()); 說(shuō)明: 1>Collections.synchronizedList(List list)實(shí)際上是創(chuàng)建了一個(gè)java.util.Collections的內(nèi)部類(lèi)SynchronizedList。 2>SynchronizedList只是在自己的方法中使用同步代碼塊將List(封裝的ArrayList、linkedList等)里相應(yīng)的方法包裹了起來(lái),故SynchronizedList的擴(kuò)容方式同它封裝的list一樣。 3>SynchronizedList還可以指定鎖對(duì)象,如不指定,默認(rèn)為this。 2)CopyOnWriteArrayList: 1>使用ReentrantLock來(lái)實(shí)現(xiàn)線程的同步。 2>每添加一個(gè)元素,就進(jìn)行一次數(shù)組的copy,故CopyOnWriteArrayList的寫(xiě)性能非常的糟糕。 3>多線程環(huán)境下,CopyOnWriteArrayList的讀性能比Collections.SynchronizedList的讀性能好一些(后者的get方法也被同步代碼塊包裹了,故讀性能稍差一點(diǎn))。 3)Stack繼承自Vector,新增了push、pop方法。
“ArrayList與Vector的異同點(diǎn)有哪些”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!