java中什么是可比较的?
我知道Comparable是一个接口,但我看到了一些代码,如ArrayList、public Comparable f、public void fComparable a。 这似乎是一门课。上述代码是如何实现的java中什么是可比较的?,java,comparable,Java,Comparable,我知道Comparable是一个接口,但我看到了一些代码,如ArrayList、public Comparable f、public void fComparable a。 这似乎是一门课。上述代码是如何实现的 import java.util.*; public class MinHeap { public MinHeap() { elements = new ArrayList<Comparable>(); elements.ad
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实现了Comparable,例如
public class Foo implements Comparable<Foo> {
public int compareTo(Foo o) {...}
}
list.add(new Foo());
使用Comparable意味着它们接受实现Comparable接口的任何类的对象 但Comparable仍然是一个接口。您不能专门创建Comparable类型的对象,但可以将实现该对象的类的实例指定给该类型的变量。例如,如果有一个类Foo实现了Comparable,例如
public class Foo implements Comparable<Foo> {
public int compareTo(Foo o) {...}
}
list.add(new Foo());
它似乎是一种数据类型,嗯?我想看看这些代码。以这种方式使用Comparable是非常罕见的。如果您在代码中看到这种情况,它可能不是好代码,或者非常旧,因为Comparable是泛型类型,所以所有这些声明都应该提到它的基类型。@realpoint。原始类型很糟糕。@AlainO'Dea:我已经还原了你的更改。你不能比较一个ArrayListi的两个元素它看起来像是一个可比较的数据类型哈?我想看看这些代码。以这种方式使用Comparable是非常罕见的。如果您在代码中看到这种情况,它可能不是好代码,或者非常旧,因为Comparable是泛型类型,所以所有这些声明都应该提到它的基类型。@realpoint。原始类型很糟糕。@AlainO'Dea:我已经还原了你的更改。实际上,你不能比较一个数组多形的两个元素,一个是精细多形,一个是精细多形