三者都属于List的子类,方法基本相同。比如都可以实现数据的添加、删除、定位以及都有迭代器进行数据的查找,但是每个类
在安全,性能,行为上有着不同的表现。
Vector是Java中线程安全的集合类,如果不是非要线程安全,不必选择使用,毕竟同步需要额外的性能
开销,底部实现也是数组来操作,再添加数据时,会自动根据需要创建新数组增加长度来保存数据,并拷贝原有数组数据
ArrayList是应用广泛的动态数组实现的集合类,不过线程不安全,所以性能要好的多,也可以根据需要增加数组容量,不过与
Vector的调整逻辑不同,ArrayList增加50%,而Vector会扩容1倍。
LinkedList是基于双向链表实现,不需要增加长度,也不是线程安全的
Vector与ArrayList在使用的时候,应保证对数据的删除、插入操作的减少,因为每次对改集合类进行这些操作时,都会使原有数据
进行移动除了对尾部数据的操作,所以非常适合随机访问的场合。
LinkedList进行节点的插入、删除却要高效的多,但是随机访问对于该集合类要慢的多。
相关文章
- Python常见面试题006 类方法、类实例方法、静态方法有何区别?
- 云原生和云计算是什么?两者有何区别?
- 绝地求生TPP与FPP模式有何区别 吃鸡TPP和FPP模式详解
- HashMap,Hashset,ArrayList以及LinkedList集合的区别,以及各自的用法
- ArrayList与Vector的区别
- Javax.swing中JFrame.getContentPane().add(pane)与JFrame.add(pane)有何区别?
- Javax.swing中JFrame.getContentPane().add(pane)与JFrame.add(pane)有何区别?
- VS新建WEB网站与WEB应用程序有何区别
- IIS中,虚拟目录与站点有何区别?
- Java中Vector与ArrayList的区别?