vector 用法(qt vector用法)

更新时间:2023-03-02 10:52:28 阅读: 评论:0

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,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/zhishi/a/167772554899260.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:vector 用法(qt vector用法).doc

本文 PDF 下载地址:vector 用法(qt vector用法).pdf

标签:vector   qt
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 实用文体写作网旗下知识大全大全栏目是一个全百科类宝库! 优秀范文|法律文书|专利查询|