千家信息网

Vector,ArrayList,LinkedList分别是什么

发表于:2024-11-11 作者:千家信息网编辑
千家信息网最后更新 2024年11月11日,这篇文章主要讲解了"Vector,ArrayList,LinkedList分别是什么",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"Vector,Arr
千家信息网最后更新 2024年11月11日Vector,ArrayList,LinkedList分别是什么

这篇文章主要讲解了"Vector,ArrayList,LinkedList分别是什么",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"Vector,ArrayList,LinkedList分别是什么"吧!

说起Vector,ArrayList,LinkedList 想必Java开发者都已经非常熟悉,这三个类基本上每月甚至每周都有人发出一遍来,故此网友将此类博客或回帖称之为挖坟。

孔老夫子说得好啊,"温故而知新,可以为师矣"(我确定不是鲁迅说的)。

即便是咱们记得滚瓜烂熟的类啊函数啊,有时候还是有必要拉出来回顾一下。

我先不说这三个类有什么定义上的区别。咱们先从性能指数来看看,同样的添加和删除10w和整数,在添加和删除的耗时情况。

插入速度:不太明显的是,在插入方面LinkedList要快Verctor和ArrayList大概不到2倍。当然了,在少量的数据上,效果差异并没有太大区别。所有离开场景的比对都是耍流氓,要说明的是Vector在插入元素时在方法上加了锁,各位同学想必都知道锁是一种安全但CPU开销很大的东西。所以一般来说不管是自己实现的方法还是原生的,要慎重判断是否需要使用锁。

public synchronized boolean add(E e) {    modCount++;    ensureCapacityHelper(elementCount + 1);    elementData[elementCount++] = e;    return true;}

删除速度:这个差距就非常明显了,LinkedList怎么这么优秀?那还用什么ArrayList?嘿嘿,别着急啊,看看访问速度先。

访问速度:哇去,竟然差这么多?刚刚还夸你优秀,我用你个鬼,你个糟老集合坏得很。这其实是因为它的实现是双向链表的原因,访问某个元素是只能是一直寻找next,找到了才返回,不能通过下标找到。

public boolean remove(Object o) {    if (o == null) {        for (Node x = first; x != null; x = x.next) {            if (x.item == null) {                unlink(x);                return true;            }        }    } else {        for (Node x = first; x != null; x = x.next) {            if (o.equals(x.item)) {                unlink(x);                return true;            }        }    }    return false;}

所以到这里大家知道怎么选择使用自己需要的集合了吧?

感谢各位的阅读,以上就是"Vector,ArrayList,LinkedList分别是什么"的内容了,经过本文的学习后,相信大家对Vector,ArrayList,LinkedList分别是什么这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

0