无论如何,我已经获得了一个类和一个PriorityQueueInterface来实现一个Linked Node PriorityQueue。但是,我在掌握班级类型时遇到了麻烦。 这是Entry类
我不知道如何在不知道这意味着什么的情况下开始作业。
public class Entry<E, P extends Comparable<? super P>>
implements Comparable<Entry<E, P>>
{
private E theItem;
private P thePriority;
public Entry(E item, P priority)
{
theItem = item;
thePriority = priority;
}
public E getItem()
{
return theItem;
}
public P getPriority()
{
return thePriority;
}
public int compareTo(Entry<E, P> other)
{
return thePriority.compareTo(other.thePriority);
}
public String toString()
{
return "item/priority <" + theItem + ", " + thePriority + ">";
}
}
这是界面
public interface PriorityQueueInterface<T extends Comparable<? super T> > {
/** Adds a new entry to this priority queue.
* @param newEntry An object to be added */
public void add(T newEntry);
/** Removes and returns the entry having the highest priority.
* @return Either the object having the highest priority or
* if, the priority queue is empty before the operation, null. */
public T remove();
/** Retrieves the entry having the highest priority.
@return Either the object having the highest priority or,
if the priority queue is empty, null. */
public T peek();
/** Detects whether this priority queue is empty.
@return True if the priority queue is empty, or false otherwise. */
public boolean isEmpty();
/** Gets the size of this priority queue.
@return The number of entries currently in the priority queue. */
public int getSize();
/** Removes all entries from this priority queue. */
public void clear();
}// End of PriorityQueueInterface
答案 0 :(得分:1)
让我们打破这个:Entry<E, P extends Comparable<? super P>> implements Comparable<Entry<E, P>>
。认为Entry是一种类型(比如A
)。因此,该声明转换为A implements Comparable<A>
。这意味着,这种类型可以将自己与同类型的其他对象进行比较。
现在让我们走得更远。 Entry有两个参数。 E
和P
。容易。
更进一步,P extends Comparable
意味着P
可以将自己与某些东西进行比较。 P
类型可以与最内层的<>
? super P
进行比较。这意味着P
可以将自身与P
类型的对象或它的超级类比较。
将所有内容放在一起,您有一个两个参数的条目,它们应该能够将自己与相同参数的其他条目进行比较。其中一个参数是E
。另一个是P
,P
应该能够将自己与任何超级对象进行比较。
如果您想了解何时撰写super
以及何时撰写extends
,有很多问题可以解释。
答案 1 :(得分:0)
Entry
中P的具体类必须实现Comparable
。由于Comparable
也是通用的,因此声明强制P必须使用Comparable
部分对P实施<? super P>
。