标签:数据 cep 双向 取消 contain 实现 lan ext 线程
一、基础
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底层的链表结构使它支持高效的插入和删除操作,源码的方法基本上也是插入和删除相关的,这些方法的逻辑基本如下:
标签:数据 cep 双向 取消 contain 实现 lan ext 线程
原文地址:https://www.cnblogs.com/yanghanwen/p/11999957.html