DESKTOP-2IHO1NT_20200908秦文亮

问题

import java.util.LinkedList;
import java.util.Queue;

public class QueueTest {

    public static void main(String[] args) {

        // 创建一个空的队列
        Queue<String> s = new LinkedList<>();
        s.add("A");//添加元素
        s.add("B");
        s.add("C");
        s.add("D");
        System.out.println(s);//输出这个队列
        //检查头部元素
        s.element();
        System.out.println(s.element());//输出头部元素
        //删除头部元素
        s.remove();//返回删除的元素是哪个直接输出
        System.out.println(s);//输出剩下的元素
        //s.element(); 当队列为空时,如果调用element()方法就会抛出NoSuchElementException
        //s.remove(); // 当队列为空时,如果调用remove()方法就会抛出NoSuchElementException
        
    }

}

import java.util.LinkedList;
import java.util.Queue;

public class QueueTest2 {// Queue接口中的offer(e)/peek()/poll()会返回特殊值

    public static void main(String[] args) {

        // 创建一个空的队列
        Queue<String> s = new LinkedList<>();
        s.offer("A");// 添加元素
        s.offer("B");
        s.offer("C");
        s.offer("D");
        System.out.println(s);// 输出这个队列
        s.peek();
        System.out.println(s.peek());// 输出头部元素

        // 删除头部元素
        String a=s.poll();// 返回删除的元素是哪个直接输出
        System.out.println(s);// 输出剩下的元素
        // 删除头部元素
        a=s.poll();// 返回删除的元素是哪个直接输出
        System.out.println(s);// 输出剩下的元素
        // 删除头部元素
        a=s.poll();// 返回删除的元素是哪个直接输出
        System.out.println(s);// 输出剩下的元素//删除头部元素
        a=s.poll();// 返回删除的元素是哪个直接输出
        System.out.println(a);// 输出剩下的元素//删除头部元素
        a=s.poll();// 返回删除的元素是哪个直接输出
        System.out.println(s);//输出队列
        System.out.println(a);// 输出剩下的元素
    }

}

import java.util.Deque;
import java.util.LinkedList;

/**
 * 1、java.util.Deque接口继承了java.util.Queue接口
 * 2、java.util.Queue接口继承了java.util.Collection接口
 * 3、java.util.Collection接口继承了java.lang.Iterable接口
 * 4、以deque.toString()对应的字符串为参照来理解头和尾,比如以字符串形式左侧为头右侧为尾
 * 5、添加元素addLast(e) /检查头部元素 getFirst() /删除头部元素 removeFirst()
 * 6、添加元素offerLast(e) / 检查头部元素peekFirst() / 删除头部元素pollFirst()
 */
public class DequeTest {

    public static void main(String[] args) {
        
        Deque<String> s=new LinkedList<>();
        System.out.println(s);//空的队列[]
        //以字符串形式左侧为头右侧为尾
        //添加元素addLast()
        s.addLast("A");
        s.addLast("B");
        s.addLast("C");
        //添加元素也可以用offerLast()
        s.offerLast("D");
        System.out.println(s);//[A, B, C, D]
        //检查头部元素用getFirst();
        String a=s.getFirst();
        System.out.println(a);//输出头部元素A
        //删除头部元素removeFirst();
        a=s.removeFirst();
        System.out.println(s);//输出剩下的元素[B, C, D]
        //检查头部元素也可以peekFirst();
        a=s.peekFirst();    
        System.out.println(a);//B
        //删除头部元素也可以用pollFirst();
        a=s.pollFirst();
        System.out.println(s);//输出剩下的元素[C, D]
    }

}
import java.util.Deque;
import java.util.LinkedList;
/**
* 1、以deque.toString()对应的字符串为参照来理解头和尾,比如以字符串形式右侧为头左侧为尾
* 2、addFirst() / getLast() / removeLast()
* 3、offerFirst() / peekLast() / pollLast()
*/
public class DequeTest2 {

    public static void main(String[] args) {
        
        Deque<String> s=new LinkedList<>();
        System.out.println(s);//输出空的序列
        //以字符串形式右侧为头左侧为尾
        //添加元素addFirst()
        s.addFirst("A");
        s.addFirst("B");
        //添加元素也可以用offerFirst()
        s.offerFirst("C");
        s.offerFirst("D");
        System.out.println(s);//[D, C, B, A]
        //检查头部元素getLast();
        String a=s.getLast();
        System.out.println(a);//输出头部元素这时是A
        //删除头部元素removeLast()
        s.removeLast();
        System.out.println(s);//输出剩下的元素[D, C, B]
        //检查头部元素peekLast()
        a=s.peekLast();
        System.out.println(a);//输出头部元素这时是B
        //删除头部元素pollLast();
        s.pollLast();
        System.out.println(s);//输出剩下的元素[D, C]
        
    }

}

import java.util.Deque;
import java.util.LinkedList;
/**
 * 1、使用java.util.Deque默认栈操作
 * 2、参照Queue实例的字符串形式确定栈顶(不要死记硬背)
 * 3、栈的特点是 后进先出( Last In First Out , LIFO )
 * 4、比如以字符串形式右侧为栈顶就说明字符串形式是左侧为头右侧为尾
 *  【addLast()/offerLast()】 /【getLast()/peekLast()】/ 【removeLast()/pollLast()】
 * 5、以字符串形式左侧为栈顶就说明字符串形式是右侧为头左侧为尾
 *  【addFirst()/offerFirst()】 /【getFirst()/peekFirst()】/ 【removeFirst()/pollFirst()】
 */
public class DequeTest3 {

    public static void main(String[] args) {
        
        Deque<String> s=new LinkedList<>();
        System.out.println(s);//
        //以字符串形式右侧为栈顶就说明字符串形式是左侧为头右侧为尾
        //添加元素addLast()/offerLast()
        s.addLast("A");
        s.addLast("B");
        System.out.println(s);//[A, B]
        //检查栈顶元素getLast()/peekLast()
        String a=s.getLast();
        System.out.println(a);//这时栈顶元素是B
        //删除栈顶元素removeLast()/pollLast()
        s.removeLast();
        System.out.println(s);//输出剩下的元素
        s.clear();
        //以字符串形式左侧为栈顶就说明字符串形式是右侧为头左侧为尾
        //添加元素
        s.addFirst("1");
        s.addFirst("2");
        s.addFirst("3");
        System.out.println(s);//[3, 2, 1]
        //检查栈顶元素
        a=s.peekFirst();
        System.out.println(a);//a
        //删除栈顶元素
        s.pollFirst();
        System.out.println(s);//输出剩下的元素
    }

}

Queue<String> s = new LinkedList<>();
这一步是创建了谁的对象?
当头部元素为空时,都是null吗?   

吐槽

头晕,真难受,一阵一阵的。