zoukankan      html  css  js  c++  java
  • ArrayList源码分析

    一、概念

      ArrayList底层通过数组实现,随着元素的增加而动态扩容,线程不安全集合。

    二、分析

    1、继承自AbstractList 

     2、实现List接口,获得List基本集合所具有的操作方法。

     3、实现RandonAccess接口,改接口没有定义任何方法,其是一个标记方法,为了获得快速随机访问存储元素的功能。

     4、实现Cloneable接口,得到了clone()方法,可以实现克隆功能。

     5、实现Serializable接口,表示可以被序列化,通过序列化去传输。

    三、总结

    • 容量不固定,随着容量的增加而动态扩容,默认初始容量为10,
    • 有序集合(插入的顺序==输出的顺序)
    • 插入的元素可以为null
    • 增删改查效率更高(相对于LinkedList来说)
    • 线程不安全

     四、扩容机制

     

    由上述源码可以看到,当原数组长度为0时,长度不超过10时,给出默认长度10,否则,则加1;当需要的数组长度大于原数组时,则进行扩容,且扩容后的长度为

    int newCapacity = oleCapacity+(oldCapacity>>1),原有长度+原有长度的一半,即原有长度的1.5倍。

  • 相关阅读:
    log.count/logrt.count/log/logrt
    datetime
    差集交集
    pandas 空df对象判断
    pyinstaller
    pysimplegui
    vi编辑实用命令
    hadoop实用命令
    查找redis安装目录
    spark streaming 读取kafka数据保存到parquet文件,redis存储offset
  • 原文地址:https://www.cnblogs.com/wuhao-0206/p/13062562.html
Copyright © 2011-2022 走看看