zoukankan      html  css  js  c++  java
  • 源码小结:Java 集合ArrayList,LinkedList 源码

    现在这篇主要讲List集合的三个子类:

    • ArrayList 底层数据结构是数组。线程不安全
    • LinkedList 底层数据结构是链表。线程不安全
    • Vector 底层数据结构是数组。线程安全

    ArrayList:

    • 底层实现是数组
    • ArrayList的默认初始化容量是10,每次扩容时候增加原先容量的一半,也就是变为原来的1.5倍
    • 在增删时候,需要数组的拷贝复制(navite 方法由C/C++实现)

    LinkedList:

    底层实现是双向链表[双向链表方便实现往前遍历]

    Vector:

    • 底层是数组,现在已少用,被ArrayList替代,原因有两个:
    1. Vector所有方法都是同步,有性能损失。
    2. 以100%比率增长,相比于ArrayList更多消耗内存。

     

    总的来说:查询多用ArrayList,增删多用LinkedList。

    ArrayList增删慢不是绝对的(在数量大的情况下,已测试):

    如果增加元素一直是使用add()(增加到末尾)的话,那是ArrayList要快

    一直删除末尾的元素也是ArrayList要快【不用复制移动位置】

    至于如果删除的是中间的位置的话,还是ArrayList要快! 但一般来说:增删多还是用LinkedList,因为上面的情况是极端的~

  • 相关阅读:
    java获取年份的后两位
    jdbcTemplate的Dao层封装
    beta准备
    福大软工 · 第十一次作业
    Alpha 冲刺 (10/10)
    Alpha 冲刺 (9/10)
    Alpha 冲刺 (8/10)
    Alpha 冲刺 (7/10)
    Alpha 冲刺 (6/10)
    Alpha 冲刺 (5/10)
  • 原文地址:https://www.cnblogs.com/yizhiamumu/p/9134919.html
Copyright © 2011-2022 走看看