这两个类都实现了List接口(List接口继承了Collection接口),他们都是有序集合,即存储在这两个集合中的元素的位置都是有顺序的,相当于一种动态的数组,我们以后可以按位置索引号取出某个元素,,并且其中的数据是允许重复的,这是HashSet之类的集合的最大不同处,HashSet之类的集合不可以按索引号去检索其中的元素,也不允许有重复的元素(本来题目问的与hashset没有任何关系,但为了说清楚ArrayList与Vector的功能,我们使用对比方式,更有利于说明问题)。
接着才说ArrayList与Vector的区别,这主要包括两个方面:
(1)同步性:
Vector是线程安全的,也就是说是它的方法之间是线程同步的,而ArrayList是线程序不安全的,它的方法之间是线程不同步的。如果只有一个线程会访问到集合,那最好是使用ArrayList,因为它不考虑线程安全,效率会高些;如果有多个线程会访问到集合,那最好是使用Vector,因为不需要我们自己再去考虑和编写线程安全的代码。
备注:对于Vector&ArrayList、Hashtable&HashMap,要记住线程安全的问题,记住Vector与Hashtable是旧的,是java一诞生就提供了的,它们是线程安全的,ArrayList与HashMap是java2时才提供的,它们是线程不安全的。所以,我们讲课时先讲老的。
(2)数据增长:
ArrayList与Vector都有一个初始的容量大小,当存储进它们里面的元素的个数超过了容量时,就需要增加ArrayList与Vector的存储空间,每次要增加存储空间时,不是只增加一个存储单元,而是增加多个存储单元,每次增加的存储单元的个数在内存空间利用与程序效率之间要取得一定的平衡。Vector默认增长为原来两倍,而ArrayList的增长策略在文档中没有明确规定(从源代码看到的是增长为原来的1.5倍)。ArrayList与Vector都可以设置初始的空间大小,Vector还可以设置增长的空间大小,而ArrayList没有提供设置增长空间的方法。
总结:即Vector增长原来的一倍,ArrayList增加原来的0.5倍。
---------------------------------------------------------------------------
分享到:
相关推荐
Java_ArrayList_Vector Java_Bubble_Sort Java_ClassLoader Java_Copy_On_Write Java_Exception Java_ExecutorService Java_IO Java_JVM_Monitor Java_Jstat Java_Lambda Java_Memory Java_Node Java_Photo_Base64...
ArrayList 和 Vector 的区别 ArrayList 和 Vector 都是 Java 中的数组列表实现,但它们也有所不同。ArrayList 不是线程安全的,而 Vector 是线程安全的。ArrayList 默认增长为原来的一半,而 Vector 默认增长为原来...
阐述ArrayList、Vector、LinkedList的存储性能和特性。 答:ArrayList 和Vector都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及...
本资源摘要信息涵盖了 JAVA 程序员笔试面试题汇总及答案,涵盖了基础题、中等题、提高题等多种题型,涉及到访问控制符、ArrayList 和 Vector 的区别、HashMap 和 Hashtable 的区别、Collection 和 Collections 的...
本文总结了Java工程师面试题大全,涵盖了Java相关的知识点,包括Hibernate、HTTP协议、SMTP协议、Servlet生命周期、SQL语句分页、集合框架、final、finally、finalize的区别、ArrayList、Vector、LinkedList的存储...
涵盖了Java面试中常见的问题,包括作用域、String类、int和Integer的区别、String和StringBuffer的区别、运行时异常与一般异常的异同、Servlet的生命周期、ArrayList、Vector、LinkedList的存储性能和特性、EJB的...
本资源摘要信息中,我们将对 Java 相关试题、笔试题和面试题进行总结和分析,涵盖了 XML 解析技术、Struts 框架、ArrayList 和 Vector 的区别、HashMap 和 Hashtable 的区别、JDK 1.5 和 1.6 新特性、Hibernate 工作...
本资源总结了 Java 相关基础知识,涵盖面向对象编程的特征、String 和 StringBuffer 的区别、运行时异常与一般异常的异同、Servlet 的生命周期、ArrayList, Vector, LinkedList 的存储性能和特性,以及 EJB 的实现...
JAVA笔试题大全共120道题+SSH框架 在本资源中,我们将对 Java 笔试题大全共 120 道题 + SSH 框架进行总结和...CGI 的区别、ArrayList, Vector, LinkedList 的存储性能和特性、Collection 和 Collections 的区别等。
本资源摘要信息涵盖了 Java 基础知识点,包括面向对象的特征、String 和 StringBuffer 的区别、运行时异常与一般异常的区别、Servlet 生命周期、ArrayList、Vector 和 LinkedList 的存储性能和特性、EJB 的实现技术...
本资源摘要信息涵盖了 Java 面试笔试题大汇总 Java 相关基础知识的主要内容,包括面向对象的特征、String 和 StringBuffer 的区别、运行时异常与一般异常的区别、Servlet 的生命周期、ArrayList、Vector、LinkedList...
ArrayList和Vector允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,插入速度较慢。LinkedList插入速度较快,但索引数据需要进行前向或后向遍历。 八、EJB的技术实现 EJB是基于JavaEE的技术...
在面试中,了解这些集合类的特性和区别是相当重要的,以下是集合框架中关于ArrayList和Vector的关键知识点。 首先,ArrayList和Vector都实现了List接口,并且都是有序集合。它们存储元素的位置是有序的,类似于数组...
List和Vector都是Java集合框架中的接口实现,主要区别在于线程安全性:Vector是线程安全的,而ArrayList不是,所以在多线程环境下,Vector的性能较差,但ArrayList更适合单线程或同步控制的场合。 在Oracle数据库中...
59、ArrayList和Vector的区别 2 60、HashMap和Hashtable的区别 2 61、List 和 Map 区别? 2 62、List, Set, Map是否继承自Collection接口? 2 63、List、Map、Set三个接口,存取元素时,各有什么特点? 2 64、说出...
1. ArrayList 和 Vector 的区别; 2、ArrayList,Vector, LinkedList 的存储性能和特性; 3. 快速失败 (fail-fast) 和安全失败 (fail-safe) 的区别; 4. HashMap 的数据结构、工作原理 等Java集合部分经常遇到的面试...
ArrayList和Vector的区别,HashMap和Hashtable的区别
2. ArrayList 和 Vector 的区别 ArrayList 和 Vector 都是 Java 中的集合类,但是它们有着不同的特点。Vector 是线程安全的,也就是说是同步的,而 ArrayList 是线程序不安全的,不是同步的。同时,Vector 的增长...
本文总结了 Java 编程语言的基础知识点,涵盖了 Java 面试题的多个方面,包括作用域、String 和 StringBuffer 的区别、运行时异常与一般异常的区别、Servlet 的生命周期、ArrayList, Vector, LinkedList 的存储性能...