• 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); } } }
  • 相关阅读:
    Vue学习笔记
    用vue-cli3搭建vue项目
    Vue 封装可向左向右查看图片列表的组件
    css修改整个项目的滚动条样式
    Vue 可输入可下拉组件的封装
    es6 实现数组的操作
    JS 实现兼容IE浏览器报警提示声音
    SPRINGBOOT9--AOP的使用(本例展示统一处理Web请求日志)
    SPRINGBOOT8--log4j日志记录
    SPRINGBOOT7--使用@Async实现异步调用
  • 原文地址:https://www.cnblogs.com/lshan/p/12363726.html
Copyright © 2020-2023  润新知