zoukankan      html  css  js  c++  java
  • ArrayList

    一、扩容

    1. 检查容量

    2. 如果不够,新建一个更长的数组

    3. 把老的数据,使用Arrays.copyOf方法,拷贝到新的数组

    4. 引用指向新的数组

    二、ArrayList使用场景

    1. 尾部插入操作,如果不扩容,效率很高;但是在指定位置插入元素,后面的元素需要移动,效率很低

    2. 尾部删除操作,效率很高;但是在指定位置删除元素,效率很低

    3. 如果插入时扩容,会调用System.arrayCopy()方法,拷贝数组效率低

    4. 所以ArrayList适合读数据比较多,不会频繁插入和删除的场景

    5. 插入和删除操作比较频繁的情况下,使用LinkedList,因为链表不适合访问,而适合插入和删除

    三、安全

    1. 当做参数时,需要考虑原始的arrayList会不会改变

    2. 可以把参数做一个拷贝,方法里使用这个拷贝

    四、复制

    1. clone()方法,浅拷贝

    2. 构造方法,把另一个ArrayList当做参数传入,浅拷贝

    3. Collection的copy方法,深拷贝

    五、subList

    1. 截取list的一部分,返回list

    2. 不可强制转换为ArrayList,否则会报错

    3. subList返回的是一个视图,并没有重新定义一个List,而是返回了原来ArrayList的一部分

    4. SubList是ArrayList的一个内部类,他们没有继承关系,强制转换会报错

    5. 结构不改变:更新了subList里的某个元素,原来的ArrayList里的相对应的元素也会改变;反之一样

    6. 结构改变:

    a. 增删了subList里的某个元素,原来ArrayList的对应的元素也会改变

    b. 增删了原来ArrayList的元素,会报异常ConcurrentModificationException

    7. 可以创建subList的拷贝,然后试用这个拷贝,就不影响原来的ArrayList了

    六、特性

    1. 元素类型是引用类型,基本类型会自动转换成引用类型

    2. 有序,先添加的元素在后添加的元素前面

  • 相关阅读:
    Mac 虚拟环境搭建使用
    Django-rest-framework --- 分页,过滤,排序组件
    Celery 分布式任务队列 -- 基础入门
    Redis
    列表
    Git
    django 框架模型之models常用的Field,及常见错误原因及处理方案。
    Django-rest-framework --- 总结
    Django-rest-framework --- drf视图的详解
    Django之POST GET与前后端交互
  • 原文地址:https://www.cnblogs.com/june0816/p/6575232.html
Copyright © 2011-2022 走看看