Vector,ArrayList,LinkedList分别是什么
更新:HHH   时间:2023-1-7


这篇文章主要讲解了“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<E> x = first; x != null; x = x.next) {
            if (x.item == null) {
                unlink(x);
                return true;
            }
        }
    } else {
        for (Node<E> x = first; x != null; x = x.next) {
            if (o.equals(x.item)) {
                unlink(x);
                return true;
            }
        }
    }
    return false;
}

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

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

返回大数据教程...