我知道Comparable是一个接口,但是我看到了一些代码,例如ArrayList<Comparable>
,public Comparable f()
,public void f(Comparable a)
。
似乎Comparable是一个类。上面的那些代码如何实现?
import java.util.*;
public class MinHeap
{
public MinHeap()
{
elements = new ArrayList<Comparable>();
elements.add(null);
}
....
}
public class BinarySearchTree
{
...
public void add(Comparable obj)
{
Node newNode = new Node();
newNode.data = obj;
newNode.left = null;
newNode.right = null;
if (root == null) root = newNode;
else root.addNode(newNode);
}
...
}
最佳答案
那些使用Comparable的意思是它们接受实现Comparable接口的任何类的对象。
但是可比仍然是一个接口。您不能专门创建Comparable类型的对象,但是可以将实现该对象的类的实例分配给该类型的变量。例如,如果存在实现Comparable的类Foo,例如
public class Foo implements Comparable<Foo> {
public int compareTo(Foo o) {...}
}
那么我可以将Foo类的对象视为Comparables。如果我有一个像这样的数组列表:
List<Comparable> list = new ArrayList<Comparable>();
我可以将Foo对象放入其中,因为它们实现了Comparable,例如
list.add(new Foo());
关于java - 什么是Java中的可比性?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33699374/