栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

ArrayList & LinkedList

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

ArrayList & LinkedList

联系与区别:
  • ArrayList:底层使用数组来存储元素(动态类型的顺序表),查询快,增删慢,线程不安全
    linkedList:底层使用双向链表结构存储管理元素(双向链表),查询慢,增删快,线程不安全
  • linkedList 不支持高效的随机元素访问
  • ArrayList 的空间浪费主要体现在在 list 的结尾预留一定的空间容量,
    linkedList 的空间花费则体现在它的每一个元素都需要消耗相当的空间
  • ArrayList 和 linkedList,其在末尾增加一个元素所花的开销都是固定的
  • 两者均实现了 List 接口
时间复杂度分析: ArrayList

1.add(E e) — O(1)
直接在后边添加元素
2.add(int index, E e) — O(N)
添加元素,在第 index 个元素后面插入,后面的元素需要向后移动
3.get(int index) — O(1)
直接读取第 index 下标的元素
4.remove(int index) — O(N)
删除指定位置的元素

linkedList

1.add(E e) — O(1)
直接在列表末尾追加元素
2.add(int index, E e) — O(N)
在此列表中的指定位置插入指定的元素,需要先找到指定位置
3.get(int index) — O(N)
返回此链表中指定位置的元素,需依次遍历
4.remove( ) — O(1)
检索并删除此链表的头

补充

若 ArrayList 无限添加元素,会抛异常嘛?

每个 ArrayList 实例都有一个容量,该容量是指用来存储列表元素的数组的大小,它总是至少等于列表的大小
用无参构造方法时系统会默认提供默认参数10,随着向 ArrayList 中不断添加元素,其容量也自动增长,自动增长会带来数据向新数组的重新拷贝,因此,如果可预知数据量的多少,可在构造ArrayList时指定其容量
ArrayList扩容时,正常情况下会扩容1.5倍 (newCapacity = oldCapacity + (oldCapacity >> 1)

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/331572.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号