`
linxizeng
  • 浏览: 104803 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Tiger学习 之 Queue

阅读更多
Queue:interface,先进先出,通过LinkedList类实现

offer方法,添加元素。类似add方法,但是offer返回boolean,不能添加时不会抛出异常
poll方法,删除(首端)元素,类似remove方法,但是poll返回boolean,不能删除时不会抛出异常

引用

Queue queue = new LinkedList();
queue.offer("a");
queue.offer("b");
queue.offer("c");
queue.remove();
System.out.println("queue values are: " + queue);

输出:queue values are: [b, c]


peek方法,取出首端值
引用

String peek = (String)queue.peek();
System.out.println("peek value is : " + peek);

输出:peek value is : a



PriorityQueue自动(按元素值)排序
引用

PriorityQueue priorityQueue = new PriorityQueue();
priorityQueue.offer(1);
priorityQueue.offer(3);
priorityQueue.offer(4);
priorityQueue.offer(2);
for(int i = 0; i < 4; i++) {
System.out.println("poll value is : " + priorityQueue.poll());
}
输出:
poll value is : 1
poll value is : 2
poll value is : 3
poll value is : 4


通过Comparator来做定义Queue的排序,也可以通过实现Comparable来比较排序

引用


eg1:compare返回正数是降序

PriorityQueue priorityQueue = new PriorityQueue(3,new Comparator(){
public int compare(Object o1, Object o2){
return (o2.hashCode()-o1.hashCode());
}
});
priorityQueue.offer(11);
priorityQueue.offer(14);
priorityQueue.offer(13);
priorityQueue.offer(12);

输出:
poll value is : 14
poll value is : 13
poll value is : 12
poll value is : 11


eg2:compare返回负数是升序

PriorityQueue priorityQueue = new PriorityQueue(3,new Comparator(){
public int compare(Object o1, Object o2){
return (o1.hashCode()-o2.hashCode());
}
});
priorityQueue.offer(11);
priorityQueue.offer(14);
priorityQueue.offer(13);
priorityQueue.offer(12);


输出:
poll value is : 11
poll value is : 12
poll value is : 13
poll value is : 14


==============================
Comparator,Comparable接口区别(资料)
  comparable是通用的接口,用户可以实现它来完成自己特定的比较,而comparator可以看成一种算法的实现,在需要容器集合 collection需要比较功能的时候,来指定这个比较器,这可以看出一种设计模式,将算法和数据分离。
前者应该比较固定,和一个具体类相绑定,而后者比较灵活,它可以被用于各个需要比较功能的类使用。可以说前者属于“静态绑定”,而后者可以“动态绑定”。

  一个类实现了Camparable接口表明这个类的对象之间是可以相互比较的。如果用数学语言描述的话就是这个类的对象组成的集合中存在一个全序。这样,这个类对象组成的集合就可以使用Sort方法排序了。
  而Comparator的作用有两个:
1. 如果类的设计师没有考虑到Compare的问题而没有实现Comparable接口,可以通过 Comparator来实现比较算法进行排序
2. 为了使用不同的排序标准做准备,比如:升序、降序或其他什么序
分享到:
评论

相关推荐

    C语言头文件 QUEUE.H

    C语言头文件 QUEUE.HC语言头文件 QUEUE.HC语言头文件 QUEUE.HC语言头文件 QUEUE.HC语言头文件 QUEUE.HC语言头文件 QUEUE.HC语言头文件 QUEUE.HC语言头文件 QUEUE.HC语言头文件 QUEUE.HC语言头文件 QUEUE.HC语言...

    C# MessageQueue示例

    在IT行业中,C#是一种广泛使用的编程语言,尤其在开发Windows桌面应用、Web应用以及游戏等领域...通过学习和实践这些示例,开发者可以更深入地理解C#中消息队列的工作原理,并能有效地利用它们来构建高效、稳定的系统。

    Queue与Topic的比较

    Queue 与 Topic 的比较 Queue 和 Topic 是 JMS(Java Message Service)中两种基本的消息模式,分别对应 Point-to-Point 和 Publish/Subscribe 模式。 Queue 模式 在 Queue 模式中,一条消息仅能被一个消费者...

    thinkphp5.0.24+queue 队列信息完整源码

    《ThinkPHP5.0.24与Queue队列技术详解》 在PHP开发领域,ThinkPHP框架因其简洁高效的特性而广受欢迎,特别是在企业级应用中,其提供的队列功能能够帮助开发者实现异步任务处理,提高系统性能。本文将详细探讨在...

    Queue-Queue-Queue

    Queue-Queue-Queue

    活用Android的Message Queue

    在Android开发中,Message Queue是一种重要的机制,用于在不同线程间进行异步通信和任务调度。理解并熟练运用Message Queue、Looper和Handler是构建高效、响应性良好的Android应用的关键。 1. **Message Queue...

    前端开源库-promise-queue-plus

    在前端开发中,异步操作是常见的编程...开发者可以通过阅读源码了解其内部实现原理,参考文档学习如何在项目中使用,并通过示例快速上手。对于前端开发者来说,掌握并运用这样的工具库,无疑会提升开发效率和项目质量。

    前端开源库-promise-queue

    Promise Queue 是一个专门用于解决此类问题的开源库,它允许我们以有序、控制流的方式执行基于Promise的异步任务。这个库的核心理念是通过队列机制限制同时运行的任务数量,从而避免系统资源过度消耗,提高应用性能...

    tp5.1消息队列 think-queue

    标题 "tp5.1消息队列 think-queue" 指的是使用ThinkPHP5.1框架集成的消息队列组件——think-queue。消息队列在软件开发中扮演着重要角色,它允许应用程序异步处理耗时任务,提高系统响应速度和整体性能。think-queue...

    C++ Queue(带上限的)

    在C++编程语言中,`Queue`是一种常用的数据结构,它遵循“先进先出”(First In First Out, FIFO)的原则。通常,C++标准库提供了`&lt;queue&gt;`头文件来实现基本的队列操作,但这个标准队列并没有设置上限。在某些特定...

    Unity3d 队列 方法 Queue

    ### Unity3D中的队列(Queue)方法解析与应用实例 #### 一、概述 在Unity3D开发中,队列是一种非常实用的数据结构,它遵循先进先出(First In First Out, FIFO)的原则,即最先加入队列的元素会最先被移除。队列在...

    c#Queue.rar

    在这个"C#Queue.rar"压缩包中,我们可以期待找到一些关于如何在C#中使用队列的示例代码,这对于初学者来说是极好的学习资源。 队列是一种线性数据结构,它的一端称为“队头”(Front),新元素在这里入队;另一端...

    C++实现STL容器之queue

    C++实现STL容器之queue

    freeswitch动态获取queue队列.doc

    在FreeSWITCH中,`queue`队列是用于处理呼叫分配的重要组件,它允许系统根据预定义的策略将呼叫分发给坐席或代理。动态获取`queue`队列涉及实时从数据库中读取队列配置,而不是静态地在配置文件中定义。以下是关于这...

    queue类常用函数

    queue队列是我们常用的类,这里我们将对queue类中常用的6个函数进行讲解,帮助大家学习。

    C语言实现的队列Queue

    在计算机科学中,数据结构是组织、存储和处理数据的方式,它们是算法设计的基础。队列(Queue)是一种线性数据结构,...理解并掌握这种数据结构对于学习其他高级数据结构和算法至关重要,也是提升编程能力的关键步骤。

    解决Can't locate ThreadQueue.pm

    标题 "解决Can't locate ThreadQueue.pm" 指出的问题是,在尝试运行一个Perl脚本时,系统无法找到模块“ThreadQueue”。这个问题通常出现在你试图使用一个依赖于ThreadQueue模块的Perl程序,但该模块尚未在你的Perl...

    STL中priority_queue

    STL 中的 priority_queue priority_queue 是 STL 中的一种容器,可以实现优先级队列的功能。下面,我们将详细介绍 priority_queue 的使用方法和实现原理。 priority_queue 的基本概念 priority_queue 是一种特殊...

    消息队列 Queue与Topic区别.docx

    ### 消息队列Queue与Topic的区别 #### 一、概念概述 消息队列(Message Queue)是一种应用程序间通信机制,允许程序之间通过发送和接收消息进行通信,而不必直接建立连接。它提供了异步处理机制,使得消息的发送者...

    STL容器queue的使用

    在STL容器中,“queue”是一种特殊的数据结构,模仿了现实生活中的队列,遵循先进先出(FIFO,First In First Out)的原则。在本主题中,我们将深入探讨STL容器`queue`的使用,包括其基本概念、操作、应用场景及如何...

Global site tag (gtag.js) - Google Analytics