java编程基础总结——21.LinkedList常见方法及作为栈和队列的使用

 一、LinkedList常见方法

1. add() 和 addAll()方法

java编程基础总结——21.LinkedList常见方法及作为栈和队列的使用_第1张图片

@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());
	}

java编程基础总结——21.LinkedList常见方法及作为栈和队列的使用_第2张图片

 

二、LinkedList作为栈的使用

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());
		
	}

java编程基础总结——21.LinkedList常见方法及作为栈和队列的使用_第3张图片

 

 

三、LinkedList作为队列的使用

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

boolean offer(E e) :将指定元素添加到此列表的末尾(最后一个元素)
E poll() :获取并移除此列表的头(第一个元素)
E element() :获取但不移除此列表的头(第一个元素)
@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());
	}

java编程基础总结——21.LinkedList常见方法及作为栈和队列的使用_第4张图片 

 四、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 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编程基础总结——21.LinkedList常见方法及作为栈和队列的使用_第5张图片

 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);
	
    }

java编程基础总结——21.LinkedList常见方法及作为栈和队列的使用_第6张图片

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);
	
	}

java编程基础总结——21.LinkedList常见方法及作为栈和队列的使用_第7张图片

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

java编程基础总结——21.LinkedList常见方法及作为栈和队列的使用_第8张图片

 

 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());

	}

java编程基础总结——21.LinkedList常见方法及作为栈和队列的使用_第9张图片

 

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());
		
	}

你可能感兴趣的:(java,jvm)