0
我在为数据结构类分配时遇到了很多麻烦。我需要使用双向链表实现一个双端优先级队列,但我的教授提供的用于测试它的代码中有一些奇怪的东西。我不明白的部分是为什么他使用DoubleEndedPriorityQueue,但添加了对象而不是整数。我得到的错误是没有方法添加(对象),这是真的。通用双端优先级队列的问题
public class Test1ForAssign2 {
public static void main(final String[] args) {
final DoubleEndedPriorityQueue<Integer> sampleL = (DoubleEndedPriorityQueue<Integer>)new ListDoubleEndedPriorityQueue();
sampleL.add((Object)5);
sampleL.add((Object)12);
sampleL.add((Object)5);
sampleL.add((Object)1);
sampleL.add((Object)(-7));
sampleL.add((Object)3);
System.out.println("Priority Queue Contents: ");
System.out.println("Deleting: " + sampleL.deleteMin());
System.out.println("Deleting: " + sampleL.deleteMax());
}
public interface DoubleEndedPriorityQueue<AnyType>{
void makeEmpty ();
void add (AnyType x);
AnyType deleteMin ();
AnyType deleteMax ();
AnyType findMin ();
AnyType findMax ();
boolean isEmpty ();
}
谢谢@ hugh这就是我的想法。顺便说一句,你可以帮助我用别的东西吗?他也给了我们这个代码: private Comparator <?超级AnyType> cmp; 私有节点 first = null; 私有节点 last = null; 但我不知道如何使用比较器,我一直试图做cmp.compare(obj1,obj2),但它总是给我一个零点异常,我敢肯定,这两个对象都不为空。我认为这是因为Integer类没有实现比较器,但是他如何期望我们这样做呢? –
(通常在一个地方发布几个问题是不好的做法,但我会尝试给出一些指针)Integer不实现Comparator,但它确实实现了Comparable - 如果您搜索那些应该能够查找文章的人这些如何不同。如果其中任何一个参数为null,'compare'可以抛出NPE,否则听起来像'compare'中的代码不正确(可能使用不带空值检查的可空字段)。你在使用调试器吗?使用一个会使你的生活*变得更好。 – hugh