Java 使用堆栈作为基本数据类型实现优先级队列

Java 使用堆栈作为基本数据类型实现优先级队列,java,stack,queue,priority-queue,Java,Stack,Queue,Priority Queue,需要认真的帮助。我需要将堆栈作为基本数据类型,并使用它来实现优先级队列。它还必须包括insert方法和removeMin方法。谢谢,谢谢你的帮助 " import java.util.PriorityQueue; 导入java.util.Scanner; 导入java.util.Stack 公共类问题2{ 公共静态void main(字符串[]args){ 扫描仪scn=新扫描仪(System.in); PriorityQueue pq=新的PriorityQueue(); 对于(int i=0

需要认真的帮助。我需要将堆栈作为基本数据类型,并使用它来实现优先级队列。它还必须包括insert方法和removeMin方法。谢谢,谢谢你的帮助

"

import java.util.PriorityQueue;
导入java.util.Scanner;
导入java.util.Stack
公共类问题2{
公共静态void main(字符串[]args){
扫描仪scn=新扫描仪(System.in);
PriorityQueue pq=新的PriorityQueue();

对于(int i=0;我能请您澄清您所需的优先级队列min/max,以便它返回min/max值。堆栈FIFO。那么为什么需要混合这些值?当您要向堆栈中添加另一个元素时,请使用
Collections.binarySearch
来确定插入它的位置。这样您可以确保堆栈中的元素总是经过排序。Im不知道为什么我需要混合这些,这只是一个项目的一部分。事实上,队列是后进先出的,这就是为什么我对如何做感到困惑和不知所措的原因。你能使用
java.util.Stack
中的所有方法吗?或者你只限于
push
pop
?是的,我可以使用java.util.Stack
import java.util.PriorityQueue;
import java.util.Scanner;
import java.util.Stack

public class Problem2 {
    public static void main(String[] args) {
        Scanner scn = new Scanner(System.in);

        PriorityQueue<Entry> pq = new PriorityQueue<Entry>();

        for (int i = 0; i<5; i++)
        {
            int a = scn.nextInt();
            String b = scn.next();
            pq.add(new Entry(a, b));
        }
        System.out.println("The output from the priority queue:");

        for(int i = 0, c = pq.size(); i<c; i++)
        {
            System.out.println(pq.remove());
        }
    }

    static class Entry implements Comparable<Entry> {
        int k;
        String v;

        public Entry() 
        {
        }
        public Entry(int key, String value) {
            k = key;
            v = value;
        }
        public String toString() {
            return ("Key " + k + " value " + v);
        }
        public int compareTo(Entry b) {
            return Integer.compare(this.k, b.k);
        }
    }
}