重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
这篇文章主要讲解了“Vector,ArrayList,LinkedList分别是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Vector,ArrayList,LinkedList分别是什么”吧!
成都创新互联公司主营金水网站建设的网络公司,主营网站建设方案,成都app软件开发,金水h5重庆小程序开发搭建,金水网站营销推广欢迎金水等地区企业咨询
说起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 (Nodex = 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分别是什么这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是创新互联,小编将为大家推送更多相关知识点的文章,欢迎关注!