1. add() 和 addAll()方法



- @Test
- void test01() {
- List
ns = new ArrayList<>(); - ns.add(1);
- ns.add(2);
- ns.add(3);
- ns.add(4);
- ns.add(5);
- ns.add(6);
- List
nums = new LinkedList<>(); - nums.add(11);
- nums.add(112);
- nums.add(0, 123);
- nums.addAll(ns);
- System.out.println(nums);
- }

- @Test
- void test02() {
- List
ns = new ArrayList<>(); - ns.add(1);
- ns.add(2);
- ns.add(3);
- ns.add(4);
- ns.add(5);
- ns.add(6);
- List
nums = new LinkedList<>(); - nums.add(11);
- nums.add(112);
- nums.add(0, 123);
- ns.addAll(nums);
- System.out.println(ns);
- }

2. subList()方法
注意:前闭后开区间
![]()
- @Test
- void test03() {
- List
nums = new LinkedList<>(); - nums.add(11);
- nums.add(112);
- nums.add(1122);
- nums.add(1128);
- nums.add(1129);
- nums.add(0, 123);
- System.out.println(nums);
- System.out.println(nums.size());
- // 切割一个全新的子列表
- System.out.println(nums.subList(1, 3));
-
- nums.forEach(new MyConsumer());
- }

LinkedList不仅仅是一个简单的双向链表
同时也是一种栈
FILO 先进后出的栈
- @Test
- void testLinkedListAsStack() {
- LinkedList
nums = new LinkedList<>(); -
- // 推入栈中
- nums.push(1230);
- nums.push(456);
- nums.push(789);
- nums.push(852);
- nums.push(147);
- nums.push(123654);
- System.out.println(nums);
-
- // 弹出栈
- System.out.println(nums.pop());
- System.out.println(nums.pop());
- System.out.println(nums.pop());
- System.out.println(nums.peek());
- System.out.println(nums.size());
-
- }

LinkedList不仅仅是一个简单的双向链表
同时也是一种队列;
FIFO 先进先出的队列
- @Test
- void testLinkedListAsQueue() {
- LinkedList
nums = new LinkedList<>(); -
- // 添加到队列中
- nums.offer(1230);
- nums.offer(456);
- nums.offer(789);
- nums.offer(852);
- nums.offer(147);
- System.out.println(nums);
-
- // 出队列
- System.out.println(nums.poll());
- System.out.println(nums.poll());
- System.out.println(nums.poll());
-
- // 看一看第一个队列顶部元素是什么
- System.out.println(nums.element());
- System.out.println(nums.size());
- }

LinkedList 也可以作为双端队列
前六个方法的作用和后六个作用一样,不同之处在于,前六个失败会抛出异常,后面的是返回boolean或者返回null来表示
- @Test
- void testLinkedListAsDeQueue() {
- LinkedList
nums = new LinkedList<>(); -
- // 头部添加元素
- nums.addFirst(123);
- nums.addFirst(456);
-
- // 尾部添加元素
- nums.addLast(789);
- nums.addLast(159);
- System.out.println(nums);
-
- //移除第一个,最后一个元素
- System.out.println(nums.removeFirst());
- System.out.println(nums.removeLast());
- System.out.println(nums);
-
- }

2. getFirst、getLast
1)、正常情况
- @Test
- void testLinkedListAsDeQueue() {
- LinkedList
nums = new LinkedList<>(); -
- // 头部添加元素
- nums.addFirst(123);
- nums.addFirst(456);
-
- // 尾部添加元素
- nums.addLast(789);
- nums.addLast(159);
- System.out.println(nums);
-
- // 获取队列的头尾
- System.out.println(nums.getFirst());
- System.out.println(nums.getLast());
- System.out.println(nums);
-
- }

2)、元素为空,无返回值,就只能抛异常
- @Test
- void testLinkedListAsDeQueue() {
- LinkedList
nums = new LinkedList<>(); -
- // 获取队列的头尾
- System.out.println(nums.getFirst());
- System.out.println(nums.getLast());
- System.out.println(nums);
-
- }
3.offerFirst、offerLast
- @Test
- void testLinkedListAsDeQueue() {
- LinkedList
nums = new LinkedList<>(); -
- // 头部添加元素
- nums.addFirst(123);
- nums.addFirst(456);
-
- // 尾部添加元素
- nums.addLast(789);
- nums.addLast(159);
- System.out.println(nums);
-
- // 返回布尔值类来表示是否成功
- System.out.println(nums.offerFirst(1));
- System.out.println(nums.offerLast(1));
- System.out.println(nums);
-
- }

- @Test
- void testLinkedListAsDeQueue() {
- LinkedList
nums = new LinkedList<>(); -
- // 返回布尔值类来表示是否成功
- System.out.println(nums.offerFirst(1));
- System.out.println(nums.offerLast(1));
- System.out.println(nums);
-
- }

4. pollFirst、pollLast
1)、正常情况
- @Test
- void testLinkedListAsDeQueue() {
- LinkedList
nums = new LinkedList<>(); -
- // LinkedList 也可以作为双端队列
-
- // 头部添加元素
- nums.addFirst(123);
- nums.addFirst(456);
-
- nums.addLast(789);
- nums.addLast(159);
-
- System.out.println(nums.pollFirst());
- System.out.println(nums.pollLast());
-
- }
2)、元素为空,返回失败,则返回null来表示
- @Test
- void testLinkedListAsDeQueue() {
- LinkedList
nums = new LinkedList<>(); -
- // 如果失败,则返回null来表示,否则返回删除的元素
- System.out.println(nums.pollFirst());
- System.out.println(nums.pollLast());
-
- }

5. peekFirst、peekLast
1)、正常情况
- @Test
- void testLinkedListAsDeQueue() {
- LinkedList
nums = new LinkedList<>(); -
- // LinkedList 也可以作为双端队列
-
- // 头部添加元素
- nums.addFirst(123);
- nums.addFirst(456);
-
- nums.addLast(789);
- nums.addLast(159);
-
- System.out.println(nums.peekFirst());
- System.out.println(nums.peekLast());
-
- }

2)、元素为空,返回失败,则返回null来表示
- @Test
- void testLinkedListAsDeQueue() {
- LinkedList
nums = new LinkedList<>(); -
- System.out.println(nums.peekFirst());
- System.out.println(nums.peekLast());
-
- }