Can someone tell me what the differences between the first and second codes are?
MaxPQ stands for priority queue, which is a collection of “Key” objects that can be compared with each other.
Code 1:
public class MaxPQ<Key extends Comparable<Key>>{
...
}
Code 2:
public class MaxPQ<Key implements Comparable<Key>>{
...
}
The second code doesn’t compile, but it is not intuitive to me why we need to extend instead of implement interfaces when using a generic.
The difference is pretty straightforward: second code snippet does not compile and never will. With generics you always use
extends, for both classes and interfaces. Alsosuperkeyword can be used there, but it has different semantics.