继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

Vector、Arraylist、LinkedList区别

代码写到手抽筋
关注TA
已关注
手记 294
粉丝 26
获赞 113

    本博客站的集合模块下有关于这几个类的源码解析,应该先阅读他们的源码。

    首先这三个类都是实现自List接口,也就使得他们都是具有角标的存储集合。

    ArrayList和Vector底层都是基于数组的而且数组大小可变,ArraList默认大小为10,当然我们也可以根据需求调用

有参构造器指定大小,Vector也一样,默认为10,可自定义大小,ArrayList扩容是变化为原数组大小的1.5倍,而Vector默认

是变为原数组大小的二倍,Vector也可以在构造器中指定每次增长的大小。Vector是线程安全的,而ArrayList是线程不安全的,

而且两者的迭代器对象都采用的是快速失败机制,快速失败机制的实现其实很简单,顺便说下,就是定义一个变量,没对集合

进行一次更改(添加、删除、修改)操作,都让这个变量加一,当用迭代器进行迭代的时候,没遍历一个都要查看一下这个变量,

看变量是否发生了变化,一旦发生了变化,立即抛出异常。

    LinkedList不同于上面两个,它的底层是链表的结构,相对于其他两个它的插入删除速度较快,查找就比较慢了。

除此之外,LinkedList集合还是先了Deque(Queue接口的子接口),所以LinkedList也代表一个双向队列。同时Deque接口还提

供了一些包括pop(出栈)和push(入栈)两个方法。所以LinkedList也可以当做“栈”来使用。由此可见,LinkedList是一个

功能强大的集合类

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP