Java集合——ArrayList与Vector的区别
来源:互联网 发布:日本搞笑综艺节目知乎 编辑:程序博客网 时间:2024/04/30 02:12
ArrayList和Vector都实现了List接口,而List一共有ArrayList、Vector、LinkedList三个实现类。List可以存放多个元素,能够维护元素的顺序,并且允许元素的重复。
首先来看一个Vector的应用实例:
import java.util.Vector;public class VetorTest2 {public static void main(String[] args) {// TODO Auto-generated method stubStaff st1 = new Staff("孙悟空",25);Staff st2 = new Staff("猪八戒",25);Vector vv = new Vector();vv.add(st1);vv.add(st2);for(int i=0;i<vv.size();i++){Staff staff = (Staff) vv.get(i);System.out.println("员工:"+staff.name+"年龄:"+staff.age);}}}class Staff{String name;public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}int age;public Staff(String name, int age) {super();this.name = name;this.age = age;}}
通过上面的Code可以看出,在使用方法上,Vector与ArrayList没有什么区别,但是在2个方面:线程安全、存储空间增长。
1、ArrayList是最常用的List实现类,内部是通过数组实现的,它允许对元素进行快速随机访问。并且是异步的。
它的缺点在于数据存储之间不能有间隔,当空间大小不能满足数据的存储时就要将已有的数据复制到新的空间。当对ArrayList进行插入或者删除时,需要对数组进行复制、移动,代价比较高。因此ArrayList适合查找、遍历,不适合插入或者删除。
2、Vector和ArrayList一样也是通过数组实现的,不同的是它支持线程同步但,即某一时刻只有一个线程访问Vector。是线程同步需要很高的性能开销,因此访问它比访问ArrayList慢。
3、LinkedList是用链表结构存储数据的,很适合数据的动态插入和删除,随机访问和遍历速度比较慢。
总结:
1、ArrayList和Vector是通过数组实现的,而且当数组的大小不够时,需要重新开辟空间,然后将元素拷贝过去。
2、ArrayList是异步的,属于非线程安全。而Vector是同步的,属于线程安全。但是大多数情况下不使用Vector,因为线程安全需要更多的内存开销。
3、Vector在内存不够时,自动增长为原来的1倍 。而ArrayList自动扩展为原来的为50%+1个。
- Java集合——ArrayList与Vector的区别
- java 集合 ArrayList与Vector的区别:
- Java中ArrayList与Vector集合的区别
- java集合:ArrayList和Vector的区别
- Java 集合ArrayList与Vector的详解
- 【JAVA集合详解】Vector与ArrayList与CopyOnWriteArrayList区别
- Java Vector与ArrayList的区别
- Java Vector与ArrayList的区别
- java中vector与arraylist的区别
- Java中Vector与ArrayList的区别?
- Java中的Vector与ArrayList的区别
- 1.Java的集合类 2.Vector,ArrayList,LinkedList,SynchronizedList 3.HashMap与ConcurrentHashMap的区别
- java基础之集合List-ArrayList、LinkedList、Vector的区别
- Java集合框架里ArrayList Vector和LinkedList的区别
- java基础(集合List-ArrayList、LinkedList、Vector的区别)
- ArrayList与Vector的区别
- ArrayList与Vector的区别
- ArrayList与Vector的区别
- Mac下Android studio关联svn以及取消关联
- PAT甲级1042. Shuffling Machine (20)
- 用popen实现在PHP代码异步调用服务器端的shell脚本
- 从零开始的RxJava生活(Android篇)(一)
- 自己动手搭建苹果推送Push服务器
- Java集合——ArrayList与Vector的区别
- 安卓高级组件----进度条
- 服务器在内网用vnc访问内网服务器
- 左移 右移 逻辑右移 算术右移
- 高斯拉普拉斯金字塔资料整理
- 编程极简入门(python)-02-安装python环境
- jvm配参方式
- 对于Unity3D编辑器拓展的一些小结
- 一天一个LINUX命令教程[3]-chgrp命令--故名思议:change group[ chgrp ]