特点: 有序,索引,可重复
实现类: ArrayList, LinkedList

List 接口中特有的抽象方法

  • 初始化:List list = new ArrayList();
  • 访问元素:E get(int index)
  • 增:
    • 插入:void add(int index, E element)
    • void addAll(int index, Collection<? extends E> c)
  • 删:boolean remove(int index) 注意:参数必须是int类型,如果是Integer类型就会调用Collect.remove(o)方法
  • 修改:E set(int index, E element)
  • 按值查找数据元素:list.indexOf(“a”), list.lastIndexOf(“a”)
  • 截取:List subList(int fromIndex, int toIndex)
  • 转换成字符串:String toString()
  • 遍历:for(String str: list){}
  • 排序:void sort(Comparator<? super E> c)

    ArrayList特有方法

  • 浅拷贝:

    • ArrayList newArray = new ArrayList(origList);
    • Object clone()
  • void removeRange(int fromIndex, int toIndex)

    LinkedList特有方法

    LinkedList类是双向列表,列表中的每个节点都包含了对前一个和后一个元素的引用.
    除了 List 接口之外,LinkedList 还实现了 Deque,Cloneable,Serializable 三个接口。这说明该数据结构支持队列,克隆和序列化操作的。

    LinkedList的remove()时间复杂度是O(N)。删除前找到所需元素需要使用O(N).

    链表操作:

  • void addFirst(E e)

  • void addLast(E e)
  • E getFirst()
  • E getLast()
  • E removeFirst()
  • E removeLast()

    栈操作:

  • E pop()

  • E peak()
  • void push(E e)

    队列操作:

  • boolean offer(E e)

  • boolean offerLast(E e)
  • E poll()
  • E pollLast()
  • E peek()
  • E peekLast()