这是LinkedList的独有方法,但是他的父接口List和祖宗集合类Collection的API都可以用,相当于继承了
压栈push和出栈pop也可以这样写:
内部的源码就是addFirst和removeFirst
package com.itheima.d5_collection_list;
import java.util.LinkedList;
public class ListDemo03 {
public static void main(String[] args) {
// LinkedList 可以完成队列结构 和栈结构(双链表)
// 栈
LinkedList<String> stack = new LinkedList<>(); // 这里不要用多态了,因为要使用LinkedList的独有功能
// 压栈,入栈
stack.addFirst("第1课子弹"); // 这个addFirst方法就等于先进到第一个位置,后面的元素把它挤下去,所以先进后出
stack.addFirst("第2课子弹");
stack.addFirst("第3课子弹");
stack.addFirst("第4课子弹"); // 因为是栈的结构是:先进后出,后进先出,所以先出来:最后一个元素
System.out.println(stack); //[第4课子弹, 第3课子弹, 第2课子弹, 第1课子弹]
// 出栈,弹栈
// System.out.println(stack.getFirst()); // 输出第一个元素(输出第一个先出的元素,也就是最后一个进的元素)
// System.out.println(stack); //[第4课子弹, 第3课子弹, 第2课子弹, 第1课子弹]
System.out.println(stack.removeFirst());// 从列表中删除,并返回第一个元素
System.out.println(stack); //[第3课子弹, 第2课子弹, 第1课子弹]
System.out.println(stack.removeFirst()); // 删除了第一个元素 :第三颗子弹
System.out.println(stack); //[第2课子弹, 第1课子弹]
// 队列 : 先进先出,后进后出 queue [kjuː] 队列的意思
LinkedList<String> queue = new LinkedList<>();
// 入队
queue.addLast("1号"); // 这个方法就等于先进到集合的最后一个位置,然后让后面的元素跟在它后面,所以先进先出
queue.addLast("2号");
queue.addLast("3号");
queue.addLast("4号");
System.out.println(queue); //[1号, 2号, 3号, 4号]
// 出队
System.out.println(queue.removeFirst());// 将第一个元素从列表中删除,并返回第一个元素
System.out.println(queue.removeFirst());
System.out.println(queue.removeFirst());
System.out.println(queue.removeFirst());
System.out.println(queue); //[]
}
}