我知道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/

10-13 04:33