LinkeList实现类的特点
- 数据有序,有下标,可重复
- 底层维护了一个链表,适合新增和删除的操作,不适合查询
创建对象
-
LinkedList()
构造一个空列表。
常用方法
特有方法:
- 添加元素
-
void addFirst(E
将指定元素插入此列表的开头。 -
void addLast(E
将指定元素添加到此列表的结尾。 -
boolean offerFisrt(E
在此列表的开头插入指定的元素。 -
boolean offerLast(E
在此列表末尾插入指定的元素。 -
boolean offer(E
将指定元素添加到此列表的末尾(最后一个元素)。 -
void push(E
将元素推入此列表所表示的堆栈。
- 删除元素
-
E removeFirst()
移除并返回此列表的第一个元素。 -
E removeLast()
移除并返回此列表的最后一个元素。 -
boolean removeFirstOccurrence(Object
从此列表中移除第一次出现的指定元素(从头部到尾部遍历列表时)。 -
boolean removeLastOccurrence(Object
从此列表中移除最后一次出现的指定元素(从头部到尾部遍历列表时)。 -
E pop()
从此列表所表示的堆栈处弹出一个元素。
- 获取元素
-
E getFirst()
返回此列表的第一个元素。 -
E getLast()
返回此列表的最后一个元素。 -
E peek()
获取但不移除此列表的头(第一个元素)。 -
E peekLast()
获取但不移除此列表的最后一个元素;如果此列表为空,则返回 null。 -
E poll()
获取并移除此列表的头(第一个元素) -
E pollFirst()
获取并移除此列表的第一个元素;如果此列表为空,则返回 null。 -
E 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 }