• Java集合——LinkedList


    一、基础

      LinkedList不是线程安全的,多线程建议使用Vector;

      LinkedList 底层使用的是 双向链表 数据结构(JDK1.6之前为循环链表,JDK1.7取消了循环);

      LinkedList 不支持高效的随机元素访问;

      实现了Cloneable接口,表明能被克隆;

      实现了Serializabble接口,表明能序列化之后传输;

    二、源码方法

      构造方法:

      无参构造方法public LinkedList() { },构造一个空的list

      一个指定collection的构造函数public LinkedList(Collection<? extends E> c)构造一个包含指定collection的元素的列表,这些元素是按照该collection的迭代器返回它们的顺序排列的

      方法:

      add(E e) 方法:将元素添加到链表尾部,添加成功返回true

      add(int index,E e):在指定位置添加元素,会先检查索引是否处于[0-size]之间

      addAll(Collection c ):将集合插入到链表尾部,添加成功返回true

      addAll(int index, Collection c): 将集合从指定位置开始插入,会先检查索引是否处于[0-size]之间,添加成功返回true

      addFirst(E e): 将元素添加到链表头部

      addLast(E e): 将元素添加到链表尾部,与 add(E e) 方法一样

      get(int index): 根据指定索引返回数据

      getFirst() 和element() 方法将会在链表为空时,抛出NoSuchElementException,element()方法的内部就是使用getFirst()实现的

      peek(),peekFirst()链表为空时返回null

      getLast() 方法在链表为空时,会抛出NoSuchElementException

      peekLast() 则不会,只是会返回 null

      int indexOf(Object o): 从头遍历找

      int lastIndexOf(Object o): 从尾遍历找

      contains(Object o): 检查对象o是否存在于链表中

      remove() ,removeFirst(),pop(): 删除头节点

      removeLast(),pollLast():removeLast()在链表为空时将抛出NoSuchElementException,而pollLast()方法返回null

      remove(int index):删除指定位置的元素

    三、总结

      LinkedList底层的链表结构使它支持高效的插入和删除操作,源码的方法基本上也是插入和删除相关的,这些方法的逻辑基本如下:

    1. 没有指定位置的插入都是在表头或末尾,指定位置的插入需要先判断是否在size内
    2. 删除时指定位置的插入需要先判断是否在size内,并且注意链表为空时,是报错还是返回null
  • 相关阅读:
    VScode 关闭回车后自动格式化代码
    『转载』专利申请
    『转载』 免费公用DNS服务及三大运营商DNS大全 含IPV4和IPV6
    正则表达式和元字符
    随机背景图
    秒表
    数组相关的函数
    对象的结构语法
    数组的结构语法
    展开合并运算符
  • 原文地址:https://www.cnblogs.com/yanghanwen/p/11999957.html
Copyright © 2020-2023  润新知