Person类
public class Person {
@Override
public String toString() {
return this.getName()+" "+this.getAge();
}
private String name;
private int age;
public Person(String name, int age) {
this.age = age;
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
比较器类
import java.util.Comparator;
public class Comparator1 implements Comparator{
private int compare(String name1, String name2){
return name1.compareTo(name2);
}
private int compare(int age1, int age2){
if(age1 > age2)
return 1;
else if(age1 == age2)
return 0;
else
return -1;
}
public int compare(Person p1, Person p2) {//接口的方法
String name1 = p1.getName();
String name2 = p2.getName();
int age1 = p1.getAge();
int age2 = p2.getAge();
return (compare(name1, name2) == 0 ? compare(age1, age2) : compare(name1, name2));
}
}
测试类
import java.util.Iterator;
import java.util.PriorityQueue;
public class Tester {
public static void main(String[] args) {
Person p1 = new Person("a", 4);
Person p2 = new Person("b", 2);
Person p3 = new Person("c", 1);
Person p4 = new Person("a", 1);
Person p5 = new Person("a", 6);
Person p6 = new Person("a", -1);
PriorityQueue pq = new PriorityQueue(20 ,new Comparator1());
pq.add(p1);
pq.add(p2);
pq.add(p3);
pq.add(p4);
pq.add(p5);
pq.add(p6);
Iterator it = pq.iterator();
while(it.hasNext()){
System.out.println(it.next());
}
while(!pq.isEmpty()){
System.out.println(pq.poll());//前面对toString()进行了重载
System.out.println("sdfsd");
}//这里要注意,对优先队列用迭代器遍历,顺序不是按照优先队列的顺序输出
}
}
分享到:
相关推荐
总的来说,自定义Java的Queue队列需要对数据结构有深入的理解,并根据具体的应用场景来设计和实现。这包括选择合适的基础数据结构(如ArrayList、LinkedList等),考虑性能和并发访问等因素,以及正确实现Queue接口...
java队列之queue用法实例分析主要介绍了java队列之queue用法实例分析,Queue 队列就是一个先入先出(FIFO)的数据结构,Queue接口继承Collection接口。Queue接口与List、Set同一级别,都是继承了Collection接口。 ...
在实际应用中,Java提供了一些内置的队列接口和类,如Queue、Deque、ArrayDeque等,它们提供了上述操作的实现。开发者可以根据具体需求选择合适的数据结构和实现方式。例如,如果需要高效访问元素,可以选择...
在Java中,队列可以使用`java.util.Queue`接口及其实现类如`LinkedList`来创建。 2. **Java 面向对象编程**:此项目中,队列可能被实现为一个类,包含队列的基本操作,如添加元素(enqueue)、移除元素(dequeue)...
Java MSMQ(Message Queuing)是Java编程中用于实现异步通信的一种技术,它基于微软的MSMQ(Microsoft Message Queue)服务。在分布式系统中,消息队列扮演着至关重要的角色,因为它允许不同组件之间解耦,使得系统...
Java提供了多种队列实现,但它们都基于两个主要的接口:`Queue` 和 `Deque`。`Queue` 是基本的队列接口,而 `Deque`(双端队列)提供了更丰富的功能,包括在两端添加和删除元素。`LinkedList` 类实现了这两个接口,...
优先队列在Java编程中是一种特殊的数据结构,它遵循特定的出队顺序,通常是最小元素(最小优先队列)或最大元素(最大优先队列)先出队。这种数据结构在解决各种问题时非常有用,例如任务调度、事件驱动编程、搜索...
1. **`BlockingQueue`接口**:这是Java并发编程中的核心接口,它继承自`Queue`接口,增加了阻塞操作的put()和take()方法。当队列满时,put()会阻塞生产者线程;当队列空时,take()会阻塞消费者线程,直到有元素可用...
在"Part03Queue"这个压缩包中,可能包含了关于如何在Java中实现环形队列的代码示例,通过学习这部分内容,你可以深入了解环形队列的内部机制,并能熟练地在自己的项目中运用。此外,"bearqu5"可能是一个开发者的名字...
在Java或Android环境中,我们可以使用ArrayList或LinkedList等内置数据结构来实现循环队列,但为了更好地控制队列的头部和尾部,我们通常选择自定义一个类来实现。以下是一个简单的循环队列实现: ```java public ...
在这个“activemq的queue队列模式的maven,spring的demo”中,我们将深入探讨如何使用Maven构建工具、Spring框架以及ActiveMQ来创建一个基于队列模式的消息传递系统。 首先,让我们了解队列模式的基本概念。在消息...
### Java循环队列的深入解析与实践应用 #### 循环队列概念解析 循环队列,作为一种高效的数据结构,广泛应用于计算机科学中,尤其是在Java编程语言中,它以其独特的性能优势,在各种算法和系统设计中占据了...
### 使用Vector类(继承)实现先进先出队列类Queue的Java实现 #### 概述 本篇文章将详细介绍如何利用Java中的`Vector`类来实现一个具有先进先出特性的队列类`Queue`。队列是一种特殊的线性表,只允许在一端进行插入...
Java消息队列(Java Message Queue, 简称JMQ)是现代软件开发中的关键组件,尤其在微服务架构中,其重要性不言而喻。面试中,掌握消息队列的基本概念、工作原理和常见问题,对于求职者来说至关重要。以下是一些面试...
Java Queue,scheduler,ThreadPoolManager,两套例子,直接可以运行的。
3. **Java队列(Queue)**:队列是一种先进先出(FIFO)的数据结构,常用于在多线程环境中传递数据。Java中的`java.util.Queue`接口提供了多种队列实现,如`ArrayDeque`、`LinkedList`和`PriorityQueue`。队列可以...
在Java编程语言中,队列和堆栈是两种基本且重要的数据结构,它们在处理数据组织和流程控制方面起着至关重要的作用。本篇将详细解释如何在Java中创建队列和堆栈,并探讨相关的核心概念。 首先,队列是一种遵循“先进...
在这个Java队列实现的数据结构作业练习中,我们将会探讨如何使用Java来创建一个简单的队列,并分析`Queue.java`和`Node.java`这两个文件可能包含的内容。 首先,`Queue.java`很可能是实现队列接口或类的文件。在...
### 编写一个JAVA的队列类 #### 概述 队列是一种基本的数据结构,遵循先进先出(FIFO)原则,即最先加入队列的元素将最先被移除。队列通常用于多线程编程、任务调度、缓存管理等场景。本文将详细介绍如何在Java中...
在Java中,我们可以使用`java.util.Queue`接口及其实现类,如`LinkedList`或`ArrayDeque`来创建队列。 接下来,我们需要创建两个线程类:一个是`CustomerThread`,代表等待叫号的客户,另一个是`ServiceThread`,...