一、LinkedList常见方法

1. add() 和 addAll()方法

java 识别参数list里面都是null java list add null_System

java 识别参数list里面都是null java list add null_java_02

java 识别参数list里面都是null java list add null_jvm_03

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

java 识别参数list里面都是null java list add null_java_04

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

java 识别参数list里面都是null java list add null_java_05

2. subList()方法 

注意:前闭后开区间

java 识别参数list里面都是null java list add null_jvm_06

@Test
	void test03() {
		List<Integer> 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());
	}

java 识别参数list里面都是null java list add null_System_07

 

二、LinkedList作为栈的使用

LinkedList不仅仅是一个简单的双向链表
同时也是一种栈
FILO 先进后出的栈

@Test
	void testLinkedListAsStack() {
		LinkedList<Integer> 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());
		
	}

java 识别参数list里面都是null java list add null_List_08

java 识别参数list里面都是null java list add null_List_09

 

 

三、LinkedList作为队列的使用

LinkedList不仅仅是一个简单的双向链表
同时也是一种队列;
FIFO 先进先出的队列


boolean offer(E e) :将指定元素添加到此列表的末尾(最后一个元素)


E poll() :获取并移除此列表的头(第一个元素)


E element() :获取但不移除此列表的头(第一个元素)



@Test
	void testLinkedListAsQueue() {
		LinkedList<Integer> 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());
	}

java 识别参数list里面都是null java list add null_java_10

 

java 识别参数list里面都是null java list add null_System_11

 四、LinkedList作为双端队列的使用

LinkedList 也可以作为双端队列


void addFirst(E e) :将指定元素插入此列表的开头。


void addLast(E e) :将指定元素添加到此列表的结尾。


E removeFirst() :移除并返回此列表的第一个元素。


E removeLast() :移除并返回此列表的最后一个元素。


E getFirst() :返回此列表的第一个元素。


E getLast() :返回此列表的最后一个元素。



boolean offerFirst(E e) :在此列表的开头插入指定的元素。


boolean offerLast(E e) :在此列表的末尾插入指定的元素。


E pollFirst() :获取并移除此列表的第一个元素;如果此列表为空,则返回 null 。


E pollLast() :获取并移除此列表的最后一个元素;如果此列表为空,则返回 null 。


E peekFirst() :获取但不移除此列表的第一个元素;如果此列表为空,则返回 null 。


E peekLast() :获取但不移除此列表的最后一个元素;如果此列表为空,则返回 null 。


 

前六个方法的作用和后六个作用一样,不同之处在于,前六个失败会抛出异常,后面的是返回boolean或者返回null来表示


1.  addFirst、 addLast、 removeFirst、 removeLast()



@Test
	void testLinkedListAsDeQueue() {
		LinkedList<Integer> 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);

	}

java 识别参数list里面都是null java list add null_jvm_12

 2. getFirst、getLast

1)、正常情况

@Test
	void testLinkedListAsDeQueue() {
		LinkedList<Integer> 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);
	
    }

java 识别参数list里面都是null java list add null_System_13

2)、元素为空,无返回值,就只能抛异常

@Test
	void testLinkedListAsDeQueue() {
		LinkedList<Integer> nums = new LinkedList<>();
			
		// 获取队列的头尾
		System.out.println(nums.getFirst());
		System.out.println(nums.getLast());
		System.out.println(nums);
	
    }

3.offerFirst、offerLast

@Test
	void testLinkedListAsDeQueue() {
		LinkedList<Integer> 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);
	
	}

java 识别参数list里面都是null java list add null_System_14

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

java 识别参数list里面都是null java list add null_List_15

 

 4. pollFirst、pollLast

1)、正常情况

@Test
	void testLinkedListAsDeQueue() {
		LinkedList<Integer> 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());
		
	}

 

java 识别参数list里面都是null java list add null_List_16

 

2)、元素为空,返回失败,则返回null来表示

@Test
	void testLinkedListAsDeQueue() {
		LinkedList<Integer> nums = new LinkedList<>();
		
		// 如果失败,则返回null来表示,否则返回删除的元素
		System.out.println(nums.pollFirst());
		System.out.println(nums.pollLast());

	}

java 识别参数list里面都是null java list add null_System_17

 

5. peekFirst、peekLast

1)、正常情况

@Test
	void testLinkedListAsDeQueue() {
		LinkedList<Integer> 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());
		
	}

 

java 识别参数list里面都是null java list add null_List_18

2)、元素为空,返回失败,则返回null来表示

@Test
	void testLinkedListAsDeQueue() {
		LinkedList<Integer> nums = new LinkedList<>();
		
		System.out.println(nums.peekFirst());
		System.out.println(nums.peekLast());
		
	}