Array有多少元素是确定的,比如足球队上场的队员有11名,是固定的,就用array。
ArrayList是不固定的,比如用sql查询数据库,不知道有多少记录返回,用Arraylist。
Enumeration 是用来一个一个列举Collection的元素的,但java2后被Iterator替代。
Hashtable用在比如你想查中国队的10号是谁,首先put(new Interger(10),new String(“海东”)),再String name=get(new Interger(10));对于简单的key--value对来说,hashtable很有用,
使用索引来取值。
HashMap/Hashtable 和 Vector/ArrayList 都是放一组对象,一个是用key object来定位element, 另一个是用index定位element.
推荐使用HashMap和ArrayList的原因一样,因为他们不是Synchronized,因为不需要obtain lock each time,它们相对快很多。Synchronized在最底层是没有意义的,在这里不想多讲。
我本人更加推荐是用LinkedList而不是 ArrayList.因为在更多的时候,我们很少真的从一个List里拿出某一个element,相对的,遍例整个List的情况最多,在这种情况下用 Iterator是最高效的。
Vector是一个一维的容器。HashTable、HashMap都是二维的。
和数组的区别是hash……不用向数组那样事先定义长度。而可以随意追加。它是key和value对应的。用key作为检索。
HashTable和Vector 都是Synchronized都是旧的Java平台的集合类,ArrayList和HashMap由于少了Synchronized的开销,速度比较快。一般不牵涉到线程之间数据共享的问题都用ArrayList和HashMap吧,当然也可以用LinkedList,用listIterator来遍历.
HashTable ,HashMap
上面两个用起来差不多,不过建议使用HashMap,因为hashtable被淘汰了
Vector,ArrayList
Vector 比 ArrayList慢,是因为vector本身是同步的,而arraylist不是
所以,没有涉及到同步的推荐用arraylist.
再谈ArrayList和LinkedList:
ArrayList的缺点是,当the underlying Array reaches the maximum capacity,一个新的双倍长的array has to be initialized,紧跟着的是Array Copy,很慢。同样,remove到1/4length时,array shrinks by creating a new shorter array and array copy all elements.所以,如果你要用的List打下常常改变,绝对不应该用ArrayList.
LinkedList的缺点是当去取某个 indexed element时,必须做一次遍历。但是,这种情况我发现在real life project里很少。
Hashtable与HashMap的区别:
1. Hashtable是基于陈旧的Dictionary的子类;HashMap是Java1.2引进的Map接口的一个实现类。
2. Hashtable中的方法是同步的,线程安全的;而HashMap中的方法在缺省情况下是非同步的。即是说,在多线程应用程序中,不用专门的操作就安全地可以使用Hashtable了;而对于HashMap,则需要额外的同步机制。
但HashMap的同步问题可通过Collections的一个静态方法得到解决:Map Collections.synchronizedMap(Map m);使用如下:Map map=Collections.synchronizedMap(new HashMap())。这个方法返回一个同步的Map,这个Map封装了底层的HashMap的所有方法,使得底层的HashMap即使是在多线程的环境中也是安全的。
3.
在HashMap中,null可以作为键,这样的键只有一个;可以有一个或多个键所对应的值为null。当get()方法返回null值时,即可以表示HashMap中没有该键,也可以表示该键所对应的值为null。
因此,在HashMap中不能由get()方法来判断HashMap中是否存在某个键,而应该用containsKey()方法来判断。而Hashtable中不允许null值。
List和Set的区别:
1. List用来处理序列,而Set用来处理集。
2. List中的内容可以重复,而Set则不行。
分享到:
相关推荐
经典讲解List和ArrayList和Vector和HashTable和HashMap区别
比较Vector、ArrayList和hashtable hashmap
比较分析Vector、ArrayList和hashtable hashmap数据结构
以下是对java中ArrayList与Vector的区别以及HashMap与Hashtable的区别进行了详细的解析。需要的朋友可以过来参考下
List、ArrayList、Vector及map、HashTable、HashMap分别的区别 List、ArrayList、Vector及map、HashTable、HashMap是Java容器类中的几个重要的接口和实现类,了解它们之间的区别是非常重要的。 首先,我们来看List...
ArrayList集合与HashMap的扩容原来 ArrayList扩容原理 ArrayList集合的底层是数组,特点是查询快增删慢。当创建一个集合时,ArrayList集合的空参构造底层数组默认长度为 0,即new Object[0]。当添加第一个元素时,...
Java中List、ArrayList、Vector及map、HashTable、HashMap分别的区别.
Comparator的区别,List和Set集合详解,List和Set的总结,HashMap和HashTable的⽐较,Map的遍历,ArrayList 与 Vector 区别呢?为什么要⽤Arraylist取代Vector呢?HashSet与TreeSet与LinkedHashSet对⽐,HashMap 的⻓...
List、ArrayList、Vector及map、HashTable、HashMap的区别与用法 使用容器排序 Vector由于使用了synchronized方法(线程安全)
Vetor ArrayList HashMap Hashtable的用法实例及多种遍历方法
HashTable, HashMap,TreeMap区别? 答: 1. HashTable线程同步,HashMap非线程同步。 2. HashTable不允许<键,值>有空值,HashMap允许<键,值>有空值。 3. HashTable使用Enumeration,HashMap使用Iterator。 4. ...
ArrayList和Vector的区别,HashMap和Hashtable的区别
如果是对其它指定位置的插⼊、删除操作,最好选择 LinkedList HashMap、HashTable 的区别及其优缺点: HashTable 中的⽅法是同步的 HashMap 的⽅法在缺省情况下是⾮同步的 因此在多线程环境下需要做额外的同步机制。...
本文试图通过简单的描述,向读者阐述各个类的作用以及如何正确使用这些类,ArrayList Vector HashMap Hashtable
HashMap 和 Hashtable 的区别 HashMap 和 Hashtable 都是 Java 中的散列表实现,但它们有所不同。HashMap 允许一个 null 键和多个 null 值,而 Hashtable 不允许 null 键和 null 值。Hashtable 还是同步的,这意味...
21. HashMap 和 Hashtable 有什么区别? 22. 如何决定使用 HashMap 还是 TreeMap? 23. 说一下 HashMap 的实现原理? 24. 说一下 HashSet 的实现原理? 25. ArrayList 和 LinkedList 的区别是什么? 26. 如何实现...
Hashtable 和 HashMap之间的区别 LinkedList内部以链表形式存储数据。 ArrayList内部以数组形式存储数据。 ? Vector同ArrayList,不过它与ArrayList比较起来是thread-safe的。 Hashtable是继承了Dictionary,是...
27、ArrayList和Vector的区别,HashMap和Hashtable的区别 答:就ArrayList与Vector主要从二方面来说. 一.同步性:Vector是线程安全的,也就是说是同步的,而ArrayList是线程序不安全的,不是同步的 二.数据增长:当需要...
软件测试笔试题,1) 简述对Vector类的理解,并写出常用到的对向量的增、删、插、定位及获取长度的方法。 答:增-add、差-insert 定位-find ...3) ArrayList和Vector的区别,HashMap和Hashtable的区别