Java 数组(Array)与集合(List、ArrayList ...)的区别

547 阅读1分钟
  • Array

    Array 长度固定,如果删除或者新增都需要重新排列所有数据,开销很大。
    Array(数组)是基于索引(index)的数据结构,它使用索引在数组中搜索和读取数据是很快的。
    

    image.png

  • List

    可以给自动扩容,而数组初始化的时候就应该给指定大小。
    而且 List 的方法很多,对里面的元素操作起来也方便。
    

    image.png

    image.png

    image.png

    其实 List 是一个接口,或者说是一套协议,所以 List 是不能被构造的:

    List list; // 正确 list = null; 
    List list=new List(); // 错误
    
  • ArrayList

    ArrayList 是继承并实现了 List,且加上一些自己特有的方法组成的类。

    还有其他的 xxxList 类也是一样,都是继承于 List

    List 不能被构造,但是可以作为接收对象来使用:

    List list = new ArrayList();
    ArrayList arrayList = new ArrayList();
    
    list.trimToSize(); // 错误,没有该方法。
    arrayList.trimToSize(); // ArrayList里有该方法。