zoukankan      html  css  js  c++  java
  • ArrayList解析

    我们了解一个接口,最好的切入点是API官方文档,所以首先看下ArrayList接口的接口API:
    public class ArrayList<E>
    extends AbstractList<E>
    implments List, RandomAccess, Cloneable, Serializable

    我们首先看到ArrayList接口继承自抽象类AbstractList;关于AbstractList ,需要了解AbstractList 中
    提供了两个迭代器的实现类,默认实现了迭代器接口,
    实现了对元素的遍历(Itr和ListItr);
    其内部只有一个抽象方法 get(也就是表明继承的子类如ArrayList只需要实现(覆盖)这一个抽象的get方法即可,可以用来获取元素);
    如果子类要操作元素,还需要重写 add(), set(), remove() 方法,因为默认是不支持的。

    然后看到ArrayList接口实现了List接口;List接口的特点:元素是对象,有序,可重复。List接口中需要了解一些
    与下标有关的操作,
    如get,set,add(注意有两个重载的add方法),indexOf等等,建议手动查看API文档。


    接着ArrayList接口实现了RandomAccess接口,表明支持快速随机访问。

    ArrayList接口实现了Cloneable标明ArrayList支持克隆;实现Serializable表明支持序列化,既可以将ArrayList以流的形式,通过ObjectInputStream/ObjectOutputStream来写/读。

    ArrayList的特点是底层数据结构采用数组实现。数组中,元素的存储空间单位是连续的(支持随机访问),通过下标查询效率很高。但是数组的插入和删除效率不会很高,思考下数组每次插入或删除时都可能要进行大量的数组元素的移动;因此ArrayList适用于查询较多的场合,不适合插入或删除较多的场合。

    推荐文档:https://mp.weixin.qq.com/s/Hd22c-CHQ8OZs4sY4ukZFw

  • 相关阅读:
    崔工读过的技术书籍,持续更新中!
    Python-S9——Day110-Git继续
    Python-S9——Day115-Flask Web框架
    树形dp 之 小胖守皇宫
    线性dp 之 奶牛渡河
    网课神器之obs-studio的安装使用
    Convert to Ones
    UVA 10653.Prince and Princess
    HDOJ 1051. Wooden Sticks
    洛谷P1063.能量项链
  • 原文地址:https://www.cnblogs.com/LearnSB/p/13266657.html
Copyright © 2011-2022 走看看