`

JAVA Queue队列

 
阅读更多
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队列

    总的来说,自定义Java的Queue队列需要对数据结构有深入的理解,并根据具体的应用场景来设计和实现。这包括选择合适的基础数据结构(如ArrayList、LinkedList等),考虑性能和并发访问等因素,以及正确实现Queue接口...

    java队列之queue用法实例分析

    java队列之queue用法实例分析主要介绍了java队列之queue用法实例分析,Queue 队列就是一个先入先出(FIFO)的数据结构,Queue接口继承Collection接口。Queue接口与List、Set同一级别,都是继承了Collection接口。 ...

    java队列实现(顺序队列、链式队列、循环队列)

    在实际应用中,Java提供了一些内置的队列接口和类,如Queue、Deque、ArrayDeque等,它们提供了上述操作的实现。开发者可以根据具体需求选择合适的数据结构和实现方式。例如,如果需要高效访问元素,可以选择...

    java队列模拟实现

    在Java中,队列可以使用`java.util.Queue`接口及其实现类如`LinkedList`来创建。 2. **Java 面向对象编程**:此项目中,队列可能被实现为一个类,包含队列的基本操作,如添加元素(enqueue)、移除元素(dequeue)...

    msmq.rar_java msmq_java 消息队列_java消息队列_msmq_消息队列

    Java MSMQ(Message Queuing)是Java编程中用于实现异步通信的一种技术,它基于微软的MSMQ(Microsoft Message Queue)服务。在分布式系统中,消息队列扮演着至关重要的角色,因为它允许不同组件之间解耦,使得系统...

    Using_Java_Queue.zip_java队列

    Java提供了多种队列实现,但它们都基于两个主要的接口:`Queue` 和 `Deque`。`Queue` 是基本的队列接口,而 `Deque`(双端队列)提供了更丰富的功能,包括在两端添加和删除元素。`LinkedList` 类实现了这两个接口,...

    优先队列-java可以选择属性和升序降序

    优先队列在Java编程中是一种特殊的数据结构,它遵循特定的出队顺序,通常是最小元素(最小优先队列)或最大元素(最大优先队列)先出队。这种数据结构在解决各种问题时非常有用,例如任务调度、事件驱动编程、搜索...

    QueueMonitor:使用 Java 的队列监视器

    1. **`BlockingQueue`接口**:这是Java并发编程中的核心接口,它继承自`Queue`接口,增加了阻塞操作的put()和take()方法。当队列满时,put()会阻塞生产者线程;当队列空时,take()会阻塞消费者线程,直到有元素可用...

    Part03Queue_java_环形队列_bearqu5_

    在"Part03Queue"这个压缩包中,可能包含了关于如何在Java中实现环形队列的代码示例,通过学习这部分内容,你可以深入了解环形队列的内部机制,并能熟练地在自己的项目中运用。此外,"bearqu5"可能是一个开发者的名字...

    Android之循环队列操作

    在Java或Android环境中,我们可以使用ArrayList或LinkedList等内置数据结构来实现循环队列,但为了更好地控制队列的头部和尾部,我们通常选择自定义一个类来实现。以下是一个简单的循环队列实现: ```java public ...

    activemq的queue队列模式的maven,spring的demo

    在这个“activemq的queue队列模式的maven,spring的demo”中,我们将深入探讨如何使用Maven构建工具、Spring框架以及ActiveMQ来创建一个基于队列模式的消息传递系统。 首先,让我们了解队列模式的基本概念。在消息...

    java循环队列的分析和实例介绍.pdf

    ### Java循环队列的深入解析与实践应用 #### 循环队列概念解析 循环队列,作为一种高效的数据结构,广泛应用于计算机科学中,尤其是在Java编程语言中,它以其独特的性能优势,在各种算法和系统设计中占据了...

    利用Vector类(继承)编写一个先进先出的队列类Queue java实现

    ### 使用Vector类(继承)实现先进先出队列类Queue的Java实现 #### 概述 本篇文章将详细介绍如何利用Java中的`Vector`类来实现一个具有先进先出特性的队列类`Queue`。队列是一种特殊的线性表,只允许在一端进行插入...

    Java消息队列常见面试题2022

    Java消息队列(Java Message Queue, 简称JMQ)是现代软件开发中的关键组件,尤其在微服务架构中,其重要性不言而喻。面试中,掌握消息队列的基本概念、工作原理和常见问题,对于求职者来说至关重要。以下是一些面试...

    Java 消息队列,调度器,线程池

    Java Queue,scheduler,ThreadPoolManager,两套例子,直接可以运行的。

    java定时器+多线程(池)+java队列Demo

    3. **Java队列(Queue)**:队列是一种先进先出(FIFO)的数据结构,常用于在多线程环境中传递数据。Java中的`java.util.Queue`接口提供了多种队列实现,如`ArrayDeque`、`LinkedList`和`PriorityQueue`。队列可以...

    JAVA建立队列与堆栈

    在Java编程语言中,队列和堆栈是两种基本且重要的数据结构,它们在处理数据组织和流程控制方面起着至关重要的作用。本篇将详细解释如何在Java中创建队列和堆栈,并探讨相关的核心概念。 首先,队列是一种遵循“先进...

    Java队列实现,数据结构

    在这个Java队列实现的数据结构作业练习中,我们将会探讨如何使用Java来创建一个简单的队列,并分析`Queue.java`和`Node.java`这两个文件可能包含的内容。 首先,`Queue.java`很可能是实现队列接口或类的文件。在...

    编写一个JAVA的队列类

    ### 编写一个JAVA的队列类 #### 概述 队列是一种基本的数据结构,遵循先进先出(FIFO)原则,即最先加入队列的元素将最先被移除。队列通常用于多线程编程、任务调度、缓存管理等场景。本文将详细介绍如何在Java中...

    java多线程模拟队列实现排队叫号

    在Java中,我们可以使用`java.util.Queue`接口及其实现类,如`LinkedList`或`ArrayDeque`来创建队列。 接下来,我们需要创建两个线程类:一个是`CustomerThread`,代表等待叫号的客户,另一个是`ServiceThread`,...

Global site tag (gtag.js) - Google Analytics