java 队列的实现

List<T> list = new LinkedList<>();
Queue<String> queue = new LinkedList<String>();

queue.offer("a");

queue.offer("b");

offer,add 区别:

一些队列有大小限制,因此如果想在一个满的队列中加入一个新项,多出的项就会被拒绝。

这时新的 offer 方法就可以起作用了。它不是对调用 add() 方法抛出一个 unchecked 异常,而只是得到由 offer() 返回的 false。

poll,remove 区别:

remove() 和 poll() 方法都是从队列中删除第一个元素。remove() 的行为与 Collection 接口的版本相似, 但是新的 poll() 方法在用空集合调用时不是抛出异常,只是返回 null。因此新的方法更适合容易出现异常条件的情况。

peek,element区别:

element() 和 peek() 用于在队列的头部查询元素。与 remove() 方法类似,在队列为空时, element() 抛出一个异常,而 peek() 返回 null。

import java.util.LinkedList;
import org.junit.Test;
public class QueueTest {
    //使用集合定义一个队列
    class Queue<T> {  
//        List<T> list = new ArrayList<>(); 
        LinkedList<T> list =  new LinkedList<>();
        int size = 0;  //下标

        //入队
        public void in(T n){  
            //添加元素
            //list.add(n); 
        list.offfer(n); size
++; } //出队 public T out(){ if(!list.isEmpty()){ size--; return list.remove(0); // return list.removeFirst(); } return null; } } @Test public void testQueue() throws Exception { Queue<Integer> queue = new Queue<Integer>(); queue.in(1); queue.in(2); queue.in(3); queue.in(4); LinkedList<Integer> linkedList = queue.list; while(queue.size>0) { Integer out = queue.out(); System.err.println(out); } } }
原文地址:https://www.cnblogs.com/lshan/p/12363726.html