您的位置:首页 > 编程语言 > Java开发

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在任意位置添加与删除元素更快
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: