千家信息网

ArrayList与Vector的异同点有哪些

发表于:2024-10-06 作者:千家信息网编辑
千家信息网最后更新 2024年10月06日,本篇内容介绍了"ArrayList与Vector的异同点有哪些"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学
千家信息网最后更新 2024年10月06日ArrayList与Vector的异同点有哪些

本篇内容介绍了"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 syncArraylist = Collections.synchronizedList(new ArrayList());                     List syncLinkedList = Collections.synchronizedList(new LinkedList());        说明:                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的异同点有哪些"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!

方法 容量 代码 性能 线程 展为 元素 实际 数组 同步 异同 不同 相同 安全 不同点 内容 包裹 实际上 更多 相同点 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 朗星网络技术 网络安全建议10条 网络技术基础网关 命令行登录虚谷数据库 长沙用友软件开发中心 网络安全解决方案参考文献 应用软件开发员工资高吗 vpn账号密码服务器 养老养生 软件开发 网络安全隔离装置正向型标准 全球十大互联网科技企业 灵武办公软件开发哪家做的好 网络安全有哪5个安全基本要素 深信服服务器内存设备品牌 深圳网络安全培训白盒测试 服务器事件管理 网络安全保障措施方案怎么写 简单 ios软件开发 青少年网络安全手抄报初中 阐述数据库在计算机领域的作用 我的世界迪士尼服务器空岛生存 桌面云服务器安装的系统 安徽云扬网络技术有限公司 我的世界都有大陆服务器下载地址 更新表中某个字段的数据库 无线网络技术与应用浙大 计算机网络安全的保护与防范 中小学生网络安全 普法 网络安全建设看不懂 传奇怪物数据库修改没效果
0