Java集合-LinkedList略解

LinkedList集合

LinkedList集合实现了List,Queue,Duque等接口,可以作为集合或队列使用
LinkedList集合的底层是双向链表,因此,LinkedList适合做大量增删操作,不适合做元素查询操作

双向链表简介:

双向链表的每个节点有三个值:此节点存储的元素,前一个节点存储的元素(first),后一个节点存储的元素(last)
当链表为空时,first和last都指向null
创建LinkedList实例:

1
2
3
4
5
6
7
import java.util.*; //导入LinkedList所在的util包
public class xiaowang{
public static void main(String args[]){
List l = new LinkedList();
l.add("Hexo");
l.add("blogxw");
System.out.println(l);

结果:

1
[Hexo, blogxw]

LinkedList新增方法

LinkedList在List的基础上新增了许多方法,使增删元素更便捷。

1.在头部添加元素 使用addFirst()方法

1
2
3
4
5
List l = new LinkedList();
l.add("CSDN");
l.add("gitee");
l.addFirst("Github");
System.out.println(l);

结果:

1
[Github,CSDN,gitee]

2.在尾部添加元素 使用addLast()方法

1
2
3
4
5
6
List l = new LinkedList();
l.add("CSDN");
l.add("gitee");
l.addFirst("Github");
l.addLast("Bilibili");
System.out.println(l);

结果:

1
[Github,CSDN,gitee,Bilibili];

3.删除头部元素 使用removeFirst()方法

1
2
3
4
5
6
7
List l = new LinkedList();
l.add("CSDN");
l.add("gitee");
l.addFirst("Github");
l.addLast("Bilibili");
l.removeFirst();
System.out.println(l);

结果:

1
[CSDN,gitee,Bilibili]

4.删除尾部元素 使用removeLast()方法

1
2
3
4
5
6
7
List l = new LinkedList();
l.add("CSDN");
l.add("gitee");
l.addFirst("Github");
l.addLast("Bilibili");
l.removeLast();
System.out.println(l);

结果:

1
[Github,CSDN,gitee]

5.获取头部元素 使用getFirst()方法

1
2
3
4
5
l.add("CSDN");
l.add("gitee");
l.addFirst("Github");
l.addLast("Bilibili");
System.out.println(l.getFirst());

结果:

1
Github

6.获取尾部元素 使用getLast()方法

1
2
3
4
5
l.add("CSDN");
l.add("gitee");
l.addFirst("Github");
l.addLast("Bilibili");
System.out.println(l.getLast());

结果:

1
Bilibili

常用方法:

  • public boolean add(E e) 链表末尾添加元素,返回是否成功,成功为 true,失败为 false。
  • public void add(int index, E element) 向指定位置插入元素。
  • public boolean addAll(Collection c) 将一个集合的所有元素添加到链表后面,返回是否成功,成功为 true,失败为 false。
  • public boolean addAll(int index, Collection c) 将一个集合的所有元素添加到链表的指定位置后面,返回是否成功,成功为 true,失败为 false。
  • public void addFirst(E e) 元素添加到头部。
  • public void addLast(E e) 元素添加到尾部。
  • public boolean offer(E e) 向链表末尾添加元素,返回是否成功,成功为 true,失败为 false。
  • public boolean offerFirst(E e) 头部插入元素,返回是否成功,成功为 true,失败为 false。
  • public boolean offerLast(E e) 尾部插入元素,返回是否成功,成功为 true,失败为 false。
  • public void clear() 清空链表。
  • public E removeFirst() 删除并返回第一个元素。
  • public E removeLast() 删除并返回最后一个元素。
  • public boolean remove(Object o) 删除某一元素,返回是否成功,成功为 true,失败为 false。
  • public E remove(int index) 删除指定位置的元素。
  • public E poll() 删除并返回第一个元素。
  • public E remove() 删除并返回第一个元素。
  • public boolean contains(Object o) 判断是否含有某一元素。
  • public E get(int index) 返回指定位置的元素。
  • public E getFirst() 返回第一个元素。
  • public E getLast() 返回最后一个元素。
  • public int indexOf(Object o) 查找指定元素从前往后第一次出现的索引。
  • public int lastIndexOf(Object o) 查找指定元素最后一次出现的索引。
  • public E peek() 返回第一个元素。
  • public E element() 返回第一个元素。
  • public E peekFirst() 返回头部元素。
  • public E peekLast() 返回尾部元素。
  • public E set(int index, E element) 设置指定位置的元素。
  • public Object clone() 克隆该列表。
  • public Iterator descendingIterator() 返回倒序迭代器。
  • public int size() 返回链表元素个数。
  • public ListIterator listIterator(int index) 返回从指定位置开始到末尾的迭代器。
  • public Object[] toArray() 返回一个由链表元素组成的数组。
  • public T[] toArray(T[] a) 返回一个由链表元素转换类型而成的数组。