Java容器总结(一)
2018-03-06 22:38
155 查看
Java容器总结,详见Github地址:https://github.com/lemonahit/Interview
不断更新中
ArrayList:基于动态数组实现,支持随机访问
[1]支持随机访问
[2]保存元素的数组使用transient进行修饰,用transient关键字标记的成员变量不参与序列化过程
这是因 为该数组不一定所有的位置都占满了元素,因此没有必要全部都进行序列化
[3]数组的默认大小为10
[4]删除元素的时候成本很高
[5]扩容时新容量为旧容量的1.5倍
[6]在进行序列化或者迭代等操作时,需要比较前后modCount是否改变
如果改变了需要抛出ConcurrentModificationException异常
注:modCount用来记录ArrayList发生变化的次数
LinkedList:基于双向循环链表实现,只能顺序访问,但是可以快速地在链表中间插入和删除元素。不仅如此,LinkedList还可以用作栈、队列和双端队列
ArrayList和Vector的区别
Vector和ArrayList几乎是完全相同的,唯一的区别在于Vector是同步的,因此开销就比ArrayList要大,访问要慢。因此最好使用ArrayList而不是Vector,因为同步完全可以由自己来进行控制
Vector每次扩容请求其大小的2倍,而ArrayList是1.5倍
ArrayList和LinkedList的区别
ArrayList是基于动态数组实现的,LinkedList是基于双向循环链表实现的
ArrayList支持随机访问,LinkedList不支持
LinkedList在任意位置添加与删除元素更快
不断更新中
ArrayList:基于动态数组实现,支持随机访问
[1]支持随机访问
[2]保存元素的数组使用transient进行修饰,用transient关键字标记的成员变量不参与序列化过程
这是因 为该数组不一定所有的位置都占满了元素,因此没有必要全部都进行序列化
[3]数组的默认大小为10
[4]删除元素的时候成本很高
[5]扩容时新容量为旧容量的1.5倍
[6]在进行序列化或者迭代等操作时,需要比较前后modCount是否改变
如果改变了需要抛出ConcurrentModificationException异常
注:modCount用来记录ArrayList发生变化的次数
LinkedList:基于双向循环链表实现,只能顺序访问,但是可以快速地在链表中间插入和删除元素。不仅如此,LinkedList还可以用作栈、队列和双端队列
ArrayList和Vector的区别
Vector和ArrayList几乎是完全相同的,唯一的区别在于Vector是同步的,因此开销就比ArrayList要大,访问要慢。因此最好使用ArrayList而不是Vector,因为同步完全可以由自己来进行控制
Vector每次扩容请求其大小的2倍,而ArrayList是1.5倍
ArrayList和LinkedList的区别
ArrayList是基于动态数组实现的,LinkedList是基于双向循环链表实现的
ArrayList支持随机访问,LinkedList不支持
LinkedList在任意位置添加与删除元素更快
相关文章推荐
- java容器总结
- Java容器总结
- Java容器(一):容器总结
- 小总结下iphone开发环境搭建过程
- Struts2第四天总结(上传)
- 2016年总结
- mysql 学习总结
- Android之Adapter用法总结
- PHILIPS ENVISOR M2540A彩超系统维修总结
- SQL Server 高性能写入的一些总结 (arvin--推荐)
- hibernate总结多表查询
- Alpha版本冲刺总结——曙光初现
- 与,非,或门总结
- JSP 学习笔记(1) -- 基础内容总结
- Reachability 网络编程总结(解析数据,下载文件,确认网络环境)
- mybatis 相关总结
- Android基础知识点总结
- Linux shell工程应用实例总结
- win 10 和 CentOS 7 双系统安装总结
- 一些SQL语句、函数总结