首页 > 编程语言 > 详细

java集合--List

时间:2020-04-09 16:40:54      阅读:60      评论:0      收藏:0      [点我收藏+]

Arraylist特点

  • 底层数据结构是数组
  • 查询快,插入删除慢(特殊情况除外)
  • 默认初始容量为10,每次扩容增加当前容量值的一半
  • 非线程安全
  • 可以存储重复元素

LinkedList特点

  • 底层数据结构是链表
  • 查询慢,插入删除快
  • 非线程安全
  • 可以存储重复元素
  • 适用于要头尾操作或插入指定位置的场景

Vector特点

  • 基本和ArrayList一样,只是所有方法都使用synchronized修饰

Arraylist查询为什么比LinkedList快?

? 因为ArrayList使用数据下标直接就获取到数据的内存地址,而LinkedList内部需要循环移动指针到要查询的位置,所以查询操作性能比较低。

Arraylist插入删除为什么比LinkedList慢?什么情况下比LinkedList快?

? 因为当在ArrayList中插入或删除数据时,ArrayList内部需要将要操作位置后面的数据后移或者前移一位(本质为复制数据),容量不够时还需要进行扩容。而linkedlist内部只需要将指针循环到要操作位置,然后改变要操作位置的node的前后指针即可

? 当使用new ArrayList<>()方法初始化,在第一次add的时候,ArrayList内部默认初始化了一个容量大小为10的数组,当容量不够时,进行自动扩容,扩容后大小增加一半,即10-->15-->22-->33。扩容:重新new一个数组,然后将原数据复制进新数组。

? 插入或删除元素的位置越靠前,ArrayList的速度越慢,反之,插入或删除元素的位置越靠后,ArrayList的速度越快,甚至超越linkedlist,当直接在list尾部添加或删除数据时,Arraylist和LinkedList速度基本一样。

? 因为当list内数据足够多的时候,插入或删除元素的位置越靠前,ArrayList需要移动的数据就越多,而LinkedList需要移动指针的步数却越少

java集合--List

原文:https://www.cnblogs.com/sh-mm/p/12667325.html

(1)
(1)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!