手记

Vector、Arraylist、LinkedList区别

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

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

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

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

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

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

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

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

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

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

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

功能强大的集合类

0人推荐
随时随地看视频
慕课网APP