集合——List接口(ArrayList、LinkedList源码剖析)

list接口是一个有序的集合,其元素以线性方式存储,集合中允许存放重复的元素
list接口继承collection接口

public interface List extends Collection { }

集合——List接口(ArrayList、LinkedList源码剖析)_第1张图片
List接口下的两个实现类ArrayList,LikedList的异同电路,各有优势(应用场景):
相同点:

  • 继承关系:list接口的实现类,具有list提供的所有方法
  • 有序性:数据都是插入有序的;
  • 重复性:元素都可以重复
  • null值:都可以存储null值
  • 安全性问题:都是非线程安全的

不同点:

  • 数据结构:ArrayList基于数组,LinkedList基于双向链表
  • 特有方法LinkedList具有特有的方法,例如addFirst(),addlist()因为实现了Deque接口
  • 效率:ArrayList查询修改效率高O(1),LinkedList添加,删除效率高(先找O(n)后删O(1),ArrayList添加元素往数组尾部添加(趋近于O(1),在不扩容的情况下就是O(1)))
  • 应用场景: 在查询较高的业务场景下优先考虑ArrayList,在修改。添加等操作较多的场景下优先考虑LinkedList
    集合——List接口(ArrayList、LinkedList源码剖析)_第2张图片

ArrayList:

每一个ArrayList实例都有一个默认的容量(10个),即存储元素的个数,这个容量的可以随着元素的增加而自动变大(每次是分配5原空间的1.5倍)。
ArrayList的继承关系:
集合——List接口(ArrayList、LinkedList源码剖析)_第3张图片

属性:
集合——List接口(ArrayList、LinkedList源码剖析)_第4张图片
构造方法:
集合——List接口(ArrayList、LinkedList源码剖析)_第5张图片
集合——List接口(ArrayList、LinkedList源码剖析)_第6张图片
增删查改:
增:
集合——List接口(ArrayList、LinkedList源码剖析)_第7张图片
集合——List接口(ArrayList、LinkedList源码剖析)_第8张图片
增加的时候就要考虑扩容问题:增长方式是1.5倍扩容
集合——List接口(ArrayList、LinkedList源码剖析)_第9张图片


集合——List接口(ArrayList、LinkedList源码剖析)_第10张图片
集合——List接口(ArrayList、LinkedList源码剖析)_第11张图片
查、改
集合——List接口(ArrayList、LinkedList源码剖析)_第12张图片

LinkedList:

属性:
集合——List接口(ArrayList、LinkedList源码剖析)_第13张图片
构造函数

集合——List接口(ArrayList、LinkedList源码剖析)_第14张图片
增删查改:
增:
ArrayList里面有给任意位置进行插入元素,而LinkedList里面只有头插和尾插
集合——List接口(ArrayList、LinkedList源码剖析)_第15张图片

集合——List接口(ArrayList、LinkedList源码剖析)_第16张图片
查、改:

集合——List接口(ArrayList、LinkedList源码剖析)_第17张图片

你可能感兴趣的:(集合)