【Java类集】_LinkedList类笔记
本章目标:
掌握LinkedList与List接口的关系
掌握Queue接口的作用
LinkedList子类与Queue接口
LinkedList表示的是一个链表的操作类,此类定义如下:
public class LinkedList<E> extends AbstractSequentialList<E> implements List<E>,Queue<E>,Cloneable,Serializable
Queue是接口Collection的子接口,此接口定义如下:
public interface Queue<E> extends Collection<E>
Queue接口定义方法:
No. 方法 类型 描述
1 boolean add(E e) 普通 将指定的元素插入此链表结尾(如果立即可行且不会违反容量限制),在成功时返回 true,如果当前没有可用的空间,则抛出 IllegalStateException。
2 E element() 普通 获取链表的表头,但是不移除此队列的头。
3 boolean offer(E e) 普通 将指定的元素插入此链表的结尾(如果立即可行且不会违反容量限制),当使用有容量限制的队列时,此方法通常要优于 add(E),后者可能无法插入元素,而只是抛出一个异常。
4 E peek() 普通 获取但不移除此队列的头;如果此队列为空,则返回 null。
5 E poll() 普通 获取并移除此队列的头,如果此队列为空,则返回 null。
6 E remove() 普通 获取并移除此队列的头。
LinkedList中操作链表的部分方法
No. 方法 类型 描述
1 public void addFirst(E o) 普通 在链表开头增加元素
2 public void addLast(E o) 普通 在链表结尾增加元素
3 public boolean offer(E o) 普通 将指定元素增加到链表的结尾
4 public E removeFirst() 普通 删除链表的第一个元素
5 public E removeLast() 普通 删除链表的最后一个元素
LinkedList 本身大量的扩展了Queue接口和List接口的操作。所以,在使用时最好直接使用LinkedList类完成操作。
为链表的开头和结尾增加数据(使用自身提供的方法)
输出:
初始化链表:[A, B, C]
增加头和尾之后链表:[X, A, B, C, Y]
对于链表也可以找到其表头(直接Queue提供的方法)
输出:
1-1、element()方法找到表头A
1-2、找完之后的链表内容:[A, B, C]
1-3、peek()方法找到表头:A
1-4、找完之后的链表内容:[A, B, C]
1-5、poll()方法找到表头:A
1-6、找完之后的链表内容:[B, C]
本章目标:
掌握LinkedList与List接口的关系
掌握Queue接口的作用
LinkedList子类与Queue接口
LinkedList表示的是一个链表的操作类,此类定义如下:
public class LinkedList<E> extends AbstractSequentialList<E> implements List<E>,Queue<E>,Cloneable,Serializable
Queue是接口Collection的子接口,此接口定义如下:
public interface Queue<E> extends Collection<E>
Queue接口定义方法:
No. 方法 类型 描述
1 boolean add(E e) 普通 将指定的元素插入此链表结尾(如果立即可行且不会违反容量限制),在成功时返回 true,如果当前没有可用的空间,则抛出 IllegalStateException。
2 E element() 普通 获取链表的表头,但是不移除此队列的头。
3 boolean offer(E e) 普通 将指定的元素插入此链表的结尾(如果立即可行且不会违反容量限制),当使用有容量限制的队列时,此方法通常要优于 add(E),后者可能无法插入元素,而只是抛出一个异常。
4 E peek() 普通 获取但不移除此队列的头;如果此队列为空,则返回 null。
5 E poll() 普通 获取并移除此队列的头,如果此队列为空,则返回 null。
6 E remove() 普通 获取并移除此队列的头。
LinkedList中操作链表的部分方法
No. 方法 类型 描述
1 public void addFirst(E o) 普通 在链表开头增加元素
2 public void addLast(E o) 普通 在链表结尾增加元素
3 public boolean offer(E o) 普通 将指定元素增加到链表的结尾
4 public E removeFirst() 普通 删除链表的第一个元素
5 public E removeLast() 普通 删除链表的最后一个元素
LinkedList 本身大量的扩展了Queue接口和List接口的操作。所以,在使用时最好直接使用LinkedList类完成操作。
为链表的开头和结尾增加数据(使用自身提供的方法)
import java.util.LinkedList;
public class LinkedListDemo01{
public static void main(String args[]){
LinkedList<String> link = new LinkedList<String>();
link.add("A");
link.add("B");
link.add("C");
System.out.println("初始化链表:"+link);
link.addFirst("X");
link.addLast("Y");
System.out.println("增加头和尾之后链表:"+link);
}
}
输出:
初始化链表:[A, B, C]
增加头和尾之后链表:[X, A, B, C, Y]
对于链表也可以找到其表头(直接Queue提供的方法)
import java.util.LinkedList;
public class LinkedListDemo02{
public static void main(String args[]){
LinkedList<String> link = new LinkedList<String>();
link.add("A");
link.add("B");
link.add("C");
System.out.println("1-1、element()方法找到表头"+link.element());
System.out.println("1-2、找完之后的链表内容:"+link);
System.out.println("1-3、peek()方法找到表头:"+link.peek());
System.out.println("1-4、找完之后的链表内容:"+link);
System.out.println("1-5、poll()方法找到表头:"+link.poll())
System.out.println("1-6、找完之后的链表内容:"+link);
}
}
输出:
1-1、element()方法找到表头A
1-2、找完之后的链表内容:[A, B, C]
1-3、peek()方法找到表头:A
1-4、找完之后的链表内容:[A, B, C]
1-5、poll()方法找到表头:A
1-6、找完之后的链表内容:[B, C]