正好碰到一个Vector存储数据的问题,以前用的都是ArrayList,遍查了一些这两个类的资料,顺便把其它两个比较类似的HashMap和HashTable的资料也整理了一下,如下:
ArrayList和Vector
ArrayList和Vector都实现了可变大小的对象数组,允许存储所有元素。
同步性:ArrayList是unsynchronized的,Vector是synchronized的。使用上在于创建Iterator对象上,因为Vector是同步的,当一个Iterator被创建而且正在被使用,另一个线程改变了Vector的状态(例如,添加或删除了一些元素),这时调用Iterator的方法时将抛出ConcurrentModificationException。因此Vector多用于队列和堆栈操作。
数据增长:当数据量超过默认容量时,ArrayList默认增长为原来的一半,而Vector增量为原来容量的一倍。
HashTable和HashMap
Hashtable和HashMap都继承Map接口,实现一个key-value映射的哈希表。
对于HashTable,HashTable是同步的,任何非空(non-null)的对象都可作为key或者value。而HashMap是非同步的并且允许null,即null value和null key。
还有一些不同还没弄明白,先把资料放这里:
HashTable:由于作为key的对象将通过计算其散列函数来确定与之对应的value的位置,因此任何作为key的对象都必须实现hashCode和equals方法。hashCode和equals方法继承自根类Object,如果你用自定义的类当作key的话,要相当小心,按照散列函数的定义,如果两个对象相同,即obj1.equals(obj2)=true,则它们的hashCode必须相同,但如果两个对象不同,则它们的hashCode不一定不同,如果两个不同对象的hashCode相同,这种现象称为冲突,冲突会导致操作哈希表的时间开销增大,所以尽量定义好的hashCode()方法,能加快哈希表的操作。如果相同的对象有不同的hashCode,对哈希表的操作会出现意想不到的结果(期待的get方法返回null),要避免这种问题,只需要牢记一条:要同时复写equals方法和hashCode方法,而不要只写其中一个。
分享到:
相关推荐
经典讲解List和ArrayList和Vector和HashTable和HashMap区别
比较分析Vector、ArrayList和hashtable hashmap数据结构
比较Vector、ArrayList和hashtable hashmap
List、ArrayList、Vector及map、HashTable、HashMap分别的区别
Java中List、ArrayList、Vector及map、HashTable、HashMap分别的区别.
以下是对java中ArrayList与Vector的区别以及HashMap与Hashtable的区别进行了详细的解析。需要的朋友可以过来参考下
List、ArrayList、Vector及map、HashTable、HashMap的区别与用法 使用容器排序 Vector由于使用了synchronized方法(线程安全)
Comparator的区别,List和Set集合详解,List和Set的总结,HashMap和HashTable的⽐较,Map的遍历,ArrayList 与 Vector 区别呢?为什么要⽤Arraylist取代Vector呢?HashSet与TreeSet与LinkedHashSet对⽐,HashMap 的⻓...
备注:对于Vector&ArrayList、Hashtable&HashMap,要记住线程安全的问题,记住Vector与Hashtable是旧的,是java一诞生就提供了的,它们是线程安全的,ArrayList与HashMap是java2时才提供的,它们是线程不安全的。...
本文试图通过简单的描述,向读者阐述各个类的作用以及如何正确使用这些类,ArrayList Vector HashMap Hashtable
Vector,ArrayList, LinkedList的区别是什么? 答: 1. Vector、ArrayList都是以类似数组的形式存储在内存中,LinkedList则以链表的形 式进行存储。 2. List中的元素有序、允许有重复的元素,Set中的元素无序、不允许...
ArrayList和Vector的区别,HashMap和Hashtable的区别
21. HashMap 和 Hashtable 有什么区别? 22. 如何决定使用 HashMap 还是 TreeMap? 23. 说一下 HashMap 的实现原理? 24. 说一下 HashSet 的实现原理? 25. ArrayList 和 LinkedList 的区别是什么? 26. 如何实现...
软件测试笔试题,1) 简述对Vector类的理解,并写出常用到的对向量的增、删、插、定位及获取长度的方法。 答:增-add、差-insert 定位-find ...3) ArrayList和Vector的区别,HashMap和Hashtable的区别
27、ArrayList和Vector的区别,HashMap和Hashtable的区别 答:就ArrayList与Vector主要从二方面来说. 一.同步性:Vector是线程安全的,也就是说是同步的,而ArrayList是线程序不安全的,不是同步的 二.数据增长:当需要...
60、HashMap和Hashtable的区别 2 61、List 和 Map 区别? 2 62、List, Set, Map是否继承自Collection接口? 2 63、List、Map、Set三个接口,存取元素时,各有什么特点? 2 64、说出ArrayList,Vector, LinkedList的存储...
4. int 和 Integer 有什么区别5. String 和StringBuffer的区别6. 说出ArrayList,Vector, LinkedList的存储性能和特性7. &和&&的区别8. HashMap和Hashtable的区别9. final, finally, finalize的区别10. Overload和...
7、说出ArrayList,Vector, LinkedList的存储性能和特性8、EJB是基于哪些技术实现的?并说出SessionBean和EntityBean的区别,StatefulBean和StatelessBean的区别。9、Collection 和 Collections的区别。10、&和&&的...
1、面向对象的特征有哪些方面 2 2、String是最基本的数据类型吗? 2 3、int 和 Integer 有什么区别 3 4、String 和StringBuffer的区别 3 5、运行时异常与一般异常有何异同?...11、HashMap和Hashtable的区别。 4