java 中的 Comparable 是什么?
what is Comparable in java?
我知道 Comparable 是一个接口,但我看到了一些代码,例如 ArrayList<Comparable>
、public Comparable f()
、public void f(Comparable a)
。
Comparable 似乎是 class。上面那些代码是如何实现的?
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 接口的 class 的对象。
但 Comparable 仍然是一个接口。您不能专门创建 Comparable 类型的对象,但可以将实现它的 class 实例分配给该类型的变量。例如,如果有一个 class Foo 实现了 Comparable,例如
public class Foo implements Comparable<Foo> {
public int compareTo(Foo o) {...}
}
然后我可以将 class Foo 的对象视为 Comparables。如果我有一个像这样的数组列表:
List<Comparable> list = new ArrayList<Comparable>();
我可以将 Foo 对象放入其中,因为它们实现了 Comparable,例如
list.add(new Foo());
我知道 Comparable 是一个接口,但我看到了一些代码,例如 ArrayList<Comparable>
、public Comparable f()
、public void f(Comparable a)
。
Comparable 似乎是 class。上面那些代码是如何实现的?
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 接口的 class 的对象。
但 Comparable 仍然是一个接口。您不能专门创建 Comparable 类型的对象,但可以将实现它的 class 实例分配给该类型的变量。例如,如果有一个 class Foo 实现了 Comparable,例如
public class Foo implements Comparable<Foo> {
public int compareTo(Foo o) {...}
}
然后我可以将 class Foo 的对象视为 Comparables。如果我有一个像这样的数组列表:
List<Comparable> list = new ArrayList<Comparable>();
我可以将 Foo 对象放入其中,因为它们实现了 Comparable,例如
list.add(new Foo());