【问题标题】:Implementing Stack With (Key,Value)使用(键,值)实现堆栈
【发布时间】:2020-08-02 14:11:37
【问题描述】:

我想知道我是否可以使用 (Key, Value) 实现一个堆栈,如下所示:

    public static void main(String[] args) {
    PriorityQueueStack<Integer,V> s = new PriorityQueueStack<>();
    s.push(1,'A');
    s.push(2,'B');
    s.push(3,'C');
    s.push(4,'D');

我的类实现如下:

  public class PriorityQueueStack<E> extends SortedPriorityQueue<Integer, E> implements 
  PriorityQueue<Integer, E>{

有没有办法用 (Key, Value) 来实现它,因为我搜索过我找不到这种实现的任何资源。

输出应该是这样的:

 (1,'A'),(2,'B')..... and so on

【问题讨论】:

  • 你尝试过使用Java的Stack类和Pair类吗?
  • 什么是“优先队列栈”?我不明白你打算如何将这两个概念结合起来。这是一个数据结构,应该是“键”的优先级队列和值的“堆栈”吗?
  • 我不建议你创建一个意大利面条类。
  • 但是栈作为 FIFO 工作 那么它就不是栈了。
  • 不可能根据优先级创建堆栈,至少在仍将其称为堆栈时不能。

标签: java algorithm class oop data-structures


【解决方案1】:

这可以通过为键值对创建一个单独的类在堆栈中添加该类的对象来完成。

class Pair{
    
    int key;
    char value;
    
    public Pair(int key,char value){
        this.key = key;
        this.value = value;
    }
    
}


public class Main {
    public static void main(String[] args) {
        Stack<Pair> stack = new Stack<>();
        stack.push(new Pair(1,'A'));
        stack.push(new Pair(2,'B'));
        stack.push(new Pair(3,'C'));
        stack.push(new Pair(4,'D'));
        // Pair p = stack.pop();
        // System.out.println(p.key+" "+p.value);
    }
}

【讨论】:

  • 是的,它会起作用的......我很高兴我的回答对你有所帮助。
  • 但是这里没有优先队列
  • 正如我所说,你有 Map.Entry 这是一个预制的类,可用于此。
  • 这个想法是我的堆栈类需要(键和值)。其余的都可以。@Joni
  • @Joni 问题的主要焦点是实现键值对堆栈。所以我遵循了上述方法。
猜你喜欢
  • 1970-01-01
  • 2013-01-25
  • 2011-07-29
  • 2019-05-09
  • 2015-08-17
  • 2021-07-08
  • 1970-01-01
  • 2017-07-27
相关资源
最近更新 更多