当前位置: 首页 > 知识库问答 >
问题:

如何向不同类型的Java集合的PriorityQueue添加元素?

党祖鹤
2023-03-14

我想添加字符串和整数元素到优先级队列。但是,在添加字符串元素和整数后,程序中断并给我错误如下:java.lang.ClassCastExcture:java.lang.字符串不能强制java.lang.整数

是否不允许在一个PriorityQueue中包含多个类型的值?另一种可能是什么?

我的PriorityQueue看起来像这样:

PriorityQueue queue = new PriorityQueue();

要添加的元素如下所示:

public void addElementToQueue(Object obj) {
        queue.add(obj);
}

共有1个答案

尚景焕
2023-03-14

我不知道你想遵循什么逻辑,但它看起来像下面的代码

 public static void main(String[] args) {
    PriorityQueue<Object> priorityQueue = new PriorityQueue<>(new Comparator<Object>() {

        @Override
        public int compare(Object o1, Object o2) {
            //Your own comparison logic
            return 0;
        }
    });
    priorityQueue.add("Bar");
    priorityQueue.add(2);
    priorityQueue.add(1);
    priorityQueue.add(3);
    priorityQueue.add(4);
    priorityQueue.add("Foo");
    System.out.println(priorityQueue);
}

如果你需要更多的细节,请告诉我。

谢谢

 类似资料:
  • 问题内容: 作为学习的练习,我将在Swift中重写我的验证库。 我有一个协议定义了各个规则的外观: 关联的类型定义要验证的输入的类型(例如,字符串)。它可以是显式的或通用的。 这是两个规则: 在其他地方,我有一个函数,用于验证带有s 集合的输入: 我以为这行得通,但是编译器不同意。 在下面的例子中,即使输入是一个字符串,的是一个字符串,并且Ş 是一个String … …我收到了非常有用的错误消息:

  • 我知道重载是在编译时决定的,但当我试图运行下面的示例时,它给出了我无法理解的结果 当我每次运行这个代码片段时,我都会得到“Collection”的输出,这意味着调用参数为Collection的classify方法。 请解释

  • 问题内容: 为什么此代码无法编译(是接口)? 问题答案: 这样做是出于安全考虑。想象一下它是否有效: 含义是“ the是扩展了某种类型的列表Parent。我们不知道哪种类型-它可能是,或。” 这使得它的安全抓取任何物品出来的的,从API和转换T到Parent,但它不是安全地调用中的从转换到......因为转换可能是无效的。

  • 这是我用于读取mime类型的类。我正在尝试添加一个新的mime类型(属性文件)并读取它。 这是我的类文件: 从这些文档中,我创建了一个自定义xml: 现在我如何添加到我的程序并阅读它。我必须创建一个解析器吗?我被困在这里了。

  • 本文向大家介绍JavaScript 向集合添加值,包括了JavaScript 向集合添加值的使用技巧和注意事项,需要的朋友参考一下 示例 要将值添加到集合,请使用以下方法:.add() 如果该值已存在于集合中,则不会再次添加,因为集合包含唯一值。 请注意,该方法本身返回集合,因此您可以将添加调用链接在一起:.add()            

  • 我正在寻找一个类型安全的,选中的解决方案,以添加一个元素到一个列表,它的泛型需要一个类和一个接口。该示例说明了我想要做的事情--将一个对象添加到一个列表中,该对象的类型扩展了并实现了,其中。 当然,将转换为会解决编译错误,但这将被取消检查。 有什么办法解决这个问题吗?如果没有,有没有人知道编译器不允许这样做的原因?