LinkeList实现类的特点

  • 数据有序,有下标,可重复
  • 底层维护了一个链表,适合新增和删除的操作,不适合查询

创建对象

  • LinkedList()  构造一个空列表。

常用方法

特有方法:

  • 添加元素
  • void     addFirst(E   将指定元素插入此列表的开头。
  • void addLast(E  将指定元素添加到此列表的结尾。
  • boolean offerFisrt(E   在此列表的开头插入指定的元素。
  • boolean offerLast(E   在此列表末尾插入指定的元素。
  • boolean offer(E   将指定元素添加到此列表的末尾(最后一个元素)。
  • void push(E   将元素推入此列表所表示的堆栈。
  • 删除元素
  • removeFirst()  移除并返回此列表的第一个元素。
  • removeLast()   移除并返回此列表的最后一个元素。
  • boolean removeFirstOccurrence(Object  从此列表中移除第一次出现的指定元素(从头部到尾部遍历列表时)。
  • boolean removeLastOccurrence(Object  从此列表中移除最后一次出现的指定元素(从头部到尾部遍历列表时)。
  • pop() 从此列表所表示的堆栈处弹出一个元素。
  • 获取元素
  • getFirst()   返回此列表的第一个元素。
  • getLast()  返回此列表的最后一个元素。
  • peek()   获取但不移除此列表的头(第一个元素)。
  • peekLast()  获取但不移除此列表的最后一个元素;如果此列表为空,则返回 null。
  • poll()  获取并移除此列表的头(第一个元素)
  • pollFirst()  获取并移除此列表的第一个元素;如果此列表为空,则返回 null。
  • pollLast()  获取并移除此列表的最后一个元素;如果此列表为空,则返回 null。

注:以上方法有点多,可以根据功能记忆,实现某一操作的方法也比较到,但是返回值也略有不同,使用的场景也不一样,可以大致了解下,需要了查用下就OK了。

特有方法的测试

1 public class Test1_LinkedList {
 2 
 3     public static void main(String[] args) {
 4         
 5         // 1、创建对象
 6 //        LinkedList<Integer> link = new LinkedList<Integer>();
 7         LinkedList<Integer> link = new LinkedList<>();  //新语法
 8         // 2、测试方法
 9         
10         link.add(100);
11         link.add(200);
12         link.add(300);
13         link.add(400);
14         System.out.println(link); // [100, 200, 300, 400]
15         link.addFirst(1);
16         link.addLast(5);  // 与add方法雷同
17         System.out.println(link);  // [1, 100, 200, 300, 400, 5]
18         
19         System.out.println(link.getFirst());  // 1 获取第一个元素
20         System.out.println(link.getLast());  // 5 获取最后一个元素
21         
22         System.out.println(link.removeFirst());  // 删除第一个元素,返回删除的元素
23         System.out.println(link);  // [100, 200, 300, 400, 5]
24         
25         System.out.println(link.removeLast());  // 删除最后一个元素,返回删除的元素
26         System.out.println(link); // [100, 200, 300, 400]
27         
28 //        System.out.println(link.offer(1)); //true 添加最后一个元素,返回true/false
29         System.out.println(link.offerLast(1)); //true 添加最后一个元素,返回true/false
30         System.out.println(link); // [100, 200, 300, 400, 1]
31         
32         System.out.println(link.offerFirst(5)); //true 添加第一个元素,返回true/false
33         System.out.println(link);  // [5, 100, 200, 300, 400, 1]
34         
35 //        System.out.println(link.poll());  // 获取并移除此列表的头(第一个元素);如果此列表为空,则返回 null。
36         System.out.println(link.pollFirst());  // 5  获取并移除此列表的第一个元素;如果此列表为空,则返回 null。
37         System.out.println(link); // [100, 200, 300, 400, 1]
38         System.out.println(link.pollLast()); // 1 获取并移除此列表的最后一个元素;如果此列表为空,则返回 null。
39         System.out.println(link); // [100, 200, 300, 400]
40         LinkedList<Integer> link2 = new LinkedList<>();  //新语法
41         System.out.println(link2.poll());  // null
42         System.out.println(link2.pollFirst()); // null
43         
44         System.out.println(link.pop());  // 100 从此列表所表示的堆栈处弹出一个元素。
45         System.out.println(link); // [200, 300, 400]
46         link.push(500);  // 将元素推入此列表所表示的堆栈。
47         System.out.println(link); // [500, 200, 300, 400]
48         
49     } 
50 
51 }