(转)Java中的queue和deque

news/2024/7/1 0:42:46

队列(queue)是一种常用的数据结构,可以将队列看做是一种特殊的线性表,该结构遵循的先进先出原则。Java中,LinkedList实现了Queue接口,因为LinkedList进行插入、删除操作效率较高 
相关常用方法: 
boolean offer(E e):将元素追加到队列末尾,若添加成功则返回true。 
E poll():从队首删除并返回该元素。 
E peek():返回队首元素,但是不删除 
示例代码:

public class QueueDemo {
    public static void main(String [] args) {
        Queue<String> queue = new LinkedList<String>();
        //追加元素
        queue.offer("one");
        queue.offer("two");
        queue.offer("three");
        queue.offer("four");
        System.out.println(queue);
        //从队首取出元素并删除
        String poll = queue.poll();
        System.out.println(poll);
        System.out.println(queue);
        //从队首取出元素但是不删除
        String peek = queue.peek();
        System.out.println(peek);
        System.out.println(queue);
        //遍历队列,这里要注意,每次取完元素后都会删除,整个
        //队列会变短,所以只需要判断队列的大小即可
        while(queue.size() > 0) {
            System.out.println(queue.poll());
        }
    }
}

 

运行结果: 
[one, two, three, four] 
one 
[two, three, four] 
two 
[two, three, four] 
two 
three 
four

双向队列(Deque),是Queue的一个子接口,双向队列是指该队列两端的元素既能入队(offer)也能出队(poll),如果将Deque限制为只能从一端入队和出队,则可实现栈的数据结构。对于栈而言,有入栈(push)和出栈(pop),遵循先进后出原则

常用方法如下: 
void push(E e):将给定元素”压入”栈中。存入的元素会在栈首。即:栈的第一个元素 
E pop():将栈首元素删除并返回。 
示例代码:

public class DequeDemo {
    public static void main(String[] args) {
        Deque<String> deque = new LinkedList<String>();
        deque.push("a");
        deque.push("b");
        deque.push("c");
        System.out.println(deque);
        //获取栈首元素后,元素不会出栈
        String str = deque.peek();
        System.out.println(str);
        System.out.println(deque);
        while(deque.size() > 0) {
            //获取栈首元素后,元素将会出栈
            System.out.println(deque.pop());
        }
        System.out.println(deque);
    }
}

 

运行结果: 
[c, b, a] 

[c, b, a] 



[]


http://www.niftyadmin.cn/n/4235438.html

相关文章

关于腾讯QQ令牌的安全性分析

2010年7月7日腾讯推出QQ令牌&#xff0c;目的是为了保护QQ帐号及游戏帐号安全的密保产品&#xff0c;该令牌是一款锁扣型的实物产品&#xff0c;可挂在钥匙扣上随身携带。当QQ用户完成令牌绑定后&#xff0c;按下QQ令牌的按键&#xff0c;会在液晶屏上显示6位动态密码用于QQ身份…

mysql long raw_数据库 long类型

关于数据库 long类型的搜索结果问题MySQL 选择题Java中java.long.Long对应Mysql数据库中什么类型( )Java中java.long.Long对应Mysql数据库中什么类型( )A、LONGB、VARCHARC、FLOATD、BIGINT...pandacats2019-12-23 18:30:250 浏览量回答数 1回答Record 应该有一个 getInt() 方法…

如何通过key获取value值,键找值!多线程单利模式 3月15日第三版 希望各位路过的高手批评指正 给出更优秀的代码方便后来人...

如何通过key获取value值&#xff0c;键找值&#xff01;多线程单利模式 3月15日第三版 封装不是很好&#xff0c;希望各位路过的高手批评指正 给出更优秀的代码方便后来人 模拟微软风格的写法&#xff0c;语义极其清晰&#xff0c;上代码 public void Test() { …

spring 注入static属性

网上好多方法都是错误的&#xff0c;google之&#xff0c;发现http://stackoverflow.com/questions/11324372/how-to-make-spring-inject-value-into-a-static-field 写道You have two possibilities: non-static setter for static property/field;using org.springframework.…

springboot mysql脚本_springboot配置mysql连接的实例代码

一&#xff1a;导入pmo.xm配置包mysql库连接、druid连接池、mybatis组件mysqlmysql-connector-javaruntimecom.alibabadruid-spring-boot-starter1.1.10org.mybatis.spring.bootmybatis-spring-boot-starter${mybatis.version}配置扫描文件src/main/java**/ *.xmltruesrc/main/…

往非sping管理的类里注入spring对象

http://stackoverflow.com/questions/310271/injecting-beans-into-a-class-outside-the-spring-managed-context 写道You can do this: ApplicationContext ctx ... YourClass someBeanNotCreatedBySpring ... ctx.getAutowireCapableBeanFactory().autowireBeanProperties(so…

stringbuilder 编码_从 String.getBytes 理解 Java 编码和解码

原码&#xff0c;补码&#xff0c;反码因为原码&#xff0c;补码&#xff0c;反码比较简单&#xff0c;我这里粘贴一个例子进行展示。Unicode 和 UTF-8 的关系Uincode 是一个字符集。它规定了我们使用到的字或符号的码点(code point)。码点使用 16 进制保存。Uincode 字符集规定…

持久化对象在Hibernate三状态解析

在Hibernate持久化对象可以划分为三种状态&#xff0c;分别是瞬态(Transient)&#xff0c;持久态(Persistent)&#xff0c;脱管态(Detached)。持久化对象的三种状态是可以相互转化的。本文向大家介绍Hibernate持久化对象&#xff0c;可能好多人还不了解Hibernate持久化对象&…