Collection
├List
│├LinkedList
│├ArrayList
│└Vector
│ └Stack
└Set
Collection接口
Collection是最基本的集合接口,一个Collection代表一组Object,即Collection的元素(Elements)。一些Collection允许相同的元素而另一些不行。一些能排序而另一些不行。Java SDK不提供直接继承自Collection的类,Java SDK提供的类都是继承自Collection的“子接口”如List和Set。
所有实现Collection接口的类都必须提供两个标准的构造函数:无参数的构造函数用于创建一个空的Collection,有一个Collection参数的构造函数用于创建一个新的Collection,这个新的Collection与传入的Collection有相同的元素。后一个构造函数允许用户复制一个Collection。
如何遍历Collection中的每一个元素?不论Collection的实际类型如何,它都支持一个iterator()的方法,该方法返回一个迭代子,使用该迭代子即可逐一访问Collection中每一个元素。典型的用法如下:
Iterator it = collection.iterator(); // 获得一个迭代子
while(it.hasNext()) {
Object obj = it.next(); // 得到下一个元素
}
由Collection接口派生的两个接口是List和Set。
List接口
List是有序的Collection,这类似于Java的数组。 和下面要提到的Set不同,List允许有相同的元素。
除了具有Collection接口必备的iterator()方法外,List还提供一个listIterator()方法,允许添加,删除,设定元素,还能向前或向后遍历。
实现List接口的常用类有LinkedList,ArrayList,Vector和Stack。
LinkedList类
LinkedList实现了List接口,允许null元素。此外LinkedList提供额外的get,remove,insert方法在LinkedList的首部或尾部。这些操作使LinkedList可被用作堆栈(stack),队列(queue)或双向队列(deque)。
注意LinkedList没有同步方法。如果多个线程同时访问一个List,则必须自己实现访问同步。一种解决方法是在创建List时构造一个同步的List:
List list = Collections.synchronizedList(new LinkedList(...));
ArrayList类
ArrayList实现了可变大小的数组。它允许所有元素,包括null。ArrayList没有同步。size,isEmpty,get,set方法运行时间为常数。但是add方法开销为分摊的常数,添加n个元素需要O(n)的时间。其他的方法运行时间为线性。
每个ArrayList实例都有一个容量(Capacity),即用于存储元素的数组的大小。这个容量可随着不断添加新元素而自动增加,但是增长算法并没有定义。当需要插入大量元素时,在插入前可以调用ensureCapacity方法来增加ArrayList的容量以提高插入效率。
和LinkedList一样,ArrayList也是非同步的(unsynchronized)。
Vector类
Vector非常类似ArrayList,但是Vector是同步的。由Vector创建的Iterator,虽然和ArrayList创建的Iterator是同一接口,但是,因为Vector是同步的,当一个Iterator被创建而且正在被使用,另一个线程改变了Vector的状态(例如,添加或删除了一些元素),这时调用Iterator的方法时将抛出ConcurrentModificationException,因此必须捕获该异常
Stack 类
Stack继承自Vector,实现一个后进先出的堆栈。
就ArrayList与Vector主要从二方面来说.
一.同步性:Vector是线程安全的,也就是说是同步的,而ArrayList是线程序不安全的,不是同步的
二.数据增长:当需要增长时,Vector默认增长为原来一培,而ArrayList却是原来的一半
如果涉及到堆栈,队列等操作,应该考虑用Vector,对于需要快速插入,删除元素,应该使用LinkedList,如果需要快速随机访问元素,应该使用ArrayList
引用链接
ArrayList和Vector的区别. ArrayList是List接口的一个可变长数组实现。实现了所有List接口的操作,并允许存储null值。除了没有进行同步,ArrayList基本等同于Vector。在Vector中几乎对所有的方法都进行了同步,但ArrayList仅对writeObject和readObject ...
ChinaUnix.net: - Java - 请教arraylist and vector的区别。(页1)
在Java中Vector和ArrayList有何区别? 那么,分别是在什么场合下使用它.有什么优,缺点?? wild fox · 发表文章: 55 注册时间: 2003年03月19日17:34. Re: 在Java中Vector和ArrayList的区别?? 发表: 2004年02月02日14:37, 回复 ...
1,作用域public,protected,private,以及不写时的区别 public 在其他的包中的类也可以引用,protected只限于同一个包内的类,private只有自己可以使用。不写的时候和protected一样。 2,ArrayList和Vector的区别,HashMap和Hashtable的区别 ...
3 arraylist和vector的区别。 4 hashmap和hashtable的区别。 篇尾有答案,我们开始正题。 集合collection接口 ... arraylist(数组表)-类似于vector,都用于缩放数组维护集合。区别: 一.同步性:vector是线程安全的,也就是说是同步的,而arraylist是线 ...
关于“ArrayList和Vector的区别,HashMap和Hashtable的区别”的解决办法. ... ArrayList和Vector的区别,HashMap和Hashtable的区别...... 有关"ArrayList和Vector的区别,HashMap和Hashtable的区别"的详细内容与相关解决办法请点击......
ArrayList与Vector的区别. Collection ├List │├LinkedList │├ArrayList │└Vector │ └Stack └Set. Collection接口Collection是最基本的集合接口,一个Collection代表一组Object,即Collection的元素(Elements)。一些Collection允许相同的元素 ...
2、ArrayList和Vector的区别,HashMap和Hashtable的区别答:就ArrayList与Vector主要从二方面来说. 一.同步性:Vector是线程安全的,也就是说是同步的,而ArrayList是线程序不安全的,不是同步的二.数据增长:当需要增长时,Vector默认增长为原来一培, ...
唯一下载软件下载,软件,下载,共享,共享软件,免费,免费软件,汉化,汉化补丁,游戏,游戏下载,软件教程,软件新闻,软件资讯,操作系统,邮件.
现在我存放数据库里查询出来的纪录一般用Vector存放,但是听说用ArrayList存放要比Vector好,想问问为什么,是取数据的速度更快还是其他别的原因,谢谢下面是我用Vector存放纪录的写的函数,如果改成ArrayList存放该怎么改?public Vector ...