Vector相對于 ArrayList,可能在非并發場景下出現的比較少,
但是對于高并發開發來說, Vector是不可或缺的。
List的實現之一List有三種實現,ArrayList, LinkedList, Vector,
它們的區別在于,
ArrayList是非線程安全的,
Vector則是線程安全。
而至于 ArrayList和 LinkedList的區別呢,
在于 ArrayList是用數組來存儲數據,LinkedList 用鏈表存儲數據。
數據擴展方面Vector擁有著和 ArrayList一樣的存儲方式,
它也是基于數組的。
不同的是,當數組大小不夠存儲新數據時他倆的擴展方式不同。
具體代碼提現在這里,
ArrayList的擴展邏輯是這樣的
public void ensureCapacity(int minCapacity) { modCount++; int oldCapacity = elementData.length; if (minCapacity > oldCapacity) { Object oldData[] = elementData; int newCapacity = (oldCapacity * 3)/2 + 1; // 增加新的數組的大小 if (newCapacity < minCapacity) newCapacity = minCapacity; // minCapacity is usually clo to size, so this is a win: elementData = Arrays.copyOf(elementData, newCapacity); }}
而 Vector的是,
private void ensureCapacityHelper(int minCapacity) { int oldCapacity = elementData.length; if (minCapacity > oldCapacity) { Object[] oldData = elementData; int newCapacity = (capacityIncrement > 0) ? (oldCapacity + capacityIncrement) : (oldCapacity * 2); //區別處 if (newCapacity < minCapacity) { newCapacity = minCapacity; } elementData = Arrays.copyOf(elementData, newCapacity); }}結論是,
雖然都是用數組存儲數據,
但是ArrayList擴展數組時,默認擴展 50% + 1個,
而 Vector擴展 2倍。
總結Vector是線程安全的,
在空間不足時,它會默認擴展2倍的數組來存儲數據。
而 ArrayList是線程不安全的,
在高并發的場景下,應該使用 Vector來代替 ArrayList。
本文發布于:2023-02-28 21:06:00,感謝您對本站的認可!
本文鏈接:http://www.newhan.cn/zhishi/a/167772554899260.html
版權聲明:本站內容均來自互聯網,僅供演示用,請勿用于商業和其他非法用途。如果侵犯了您的權益請與我們聯系,我們將在24小時內刪除。
本文word下載地址:vector 用法(qt vector用法).doc
本文 PDF 下載地址:vector 用法(qt vector用法).pdf
| 留言與評論(共有 0 條評論) |