什么是Java中的可比较?

时间:2015-11-13 18:20:59

标签: java comparable

我知道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);
    }
    ...
}

1 个答案:

答案 0 :(得分:4)

Comparable的这些用法意味着它们接受任何实现Comparable接口的类的对象。

但是Comparable仍然是一个界面。您无法专门创建Comparable类型的对象,但您可以将实现它的类的实例分配给该类型的变量。例如,如果有一个实现Comparable的类Foo,例如

public class Foo implements Comparable<Foo> {
    public int compareTo(Foo o) {...}
}

然后我可以将Foo类的对象视为可比较对象。如果我有一个数组列表,如:

List<Comparable> list = new ArrayList<Comparable>();

我可以将Foo对象放入其中,因为它们实现了Comparable,例如

list.add(new Foo());