面试题:ArrayList、LinkedList、Vector三者的异同?
2024-09-01 23:36:26
面试题:ArrayList、LinkedList、Vector三者的异同?
同:三个类都是实现了List接口(Collection的子接口之一),存储数据的特点相同:存储有序的、可重复的数据
不同:
* |----ArrayList:作为List接口的主要实现类;线程不安全的,效率高;底层使用Object[] elementData存储
* |----LinkedList:对于频繁的插入、删除操作,使用此类效率比ArrayList高;底层使用【双向链表】存储
* |----Vector:作为List接口的古老实现类;线程安全的,效率低;底层使用Object[] elementData存储
双向链表增删的示意图:
面试题:
请问ArrayList/LinkedList/Vector的异同?谈谈你的理解?ArrayList底层
是什么?扩容机制?Vector和ArrayList的最大区别?
ArrayList和LinkedList的异同
二者都线程不安全,相对线程安全的Vector,执行效率高。
此外,ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构。对于
随机访问get和set,ArrayList觉得优于LinkedList,因为LinkedList要移动指针。对于新增
和删除操作add(特指插入)和remove,LinkedList比较占优势,因为ArrayList要移动数据。
ArrayList和Vector的区别
Vector和ArrayList几乎是完全相同的,唯一的区别在于Vector是同步类(synchronized),属于
强同步类。因此开销就比ArrayList要大,访问要慢。正常情况下,大多数的Java程序员使用
ArrayList而不是Vector,因为同步完全可以由程序员自己来控制。Vector每次扩容请求其大
小的2倍空间,而ArrayList是1.5倍。Vector还有一个子类Stack。
最新文章
- [SAP ABAP开发技术总结]ABAP调优——代码优化
- mybatis中的mapxml的语法
- BFS:Meteor Shower(POJ 3669)
- HDU 5003 Osu!
- 1.6.9 UIMA Integration
- Kill 所有MySQL进程
- Docker技术学习
- HTTP基础知识
- WP8.1开发中关于如何显示.gif格式动态格式图片方法
- 转:【Java并发编程】之二十三:并发新特性—信号量Semaphore(含代码)
- 大白话说Java反射:入门、使用、原理
- PHPWord导出word文档
- PAT 1116 Come on! Let's C
- 【XSY1591】卡片游戏 DP
- linux系统的三种网络连接模式
- 动画优化、客户端存储、历史记录、worker
- 背水一战 Windows 10 (71) - 控件(控件基类): UIElement - RenderTransform(2D变换), Clip(剪裁)
- C# 获取文件名及扩展名【转】
- Bate冲刺四——《WAP团队》
- oracle最精简客户端(3个文件+1个path变量就搞定oracle客户端)
热门文章
- Android学习之Broadcast初体验
- teprunner测试平台Django引入pytest完整源码
- DFS 深搜专题 入门典例 -- 凌宸1642
- Kubernetes 常用日志收集方案
- [Fundamental of Power Electronics]-PART I-4.开关实现-4.1 开关应用
- 安装Dynamics CRM Report出错二
- Go-21-结构体
- 2. Mybatis Select
- HUAWEI AppGallery Connect获得SOC国际权威认证,多举措保护信息和隐私安全
- Matrix Chain Multiplication UVA - 442