2013-04-13 54 views
-3

我想知道Comparable在Java中比较的接口。 假设我有两个节点,每个节点只有一个实例变量。 node1.compareTo(node2)如何工作?Java中的接口Comparable比较什么?

谢谢!

+0

我们展示Node.compareTo的'代码()',我们可以告诉你它进行比较。 –

+1

http://docs.oracle.com/javase/6/docs/api/java/lang/Comparable.html#compareTo%28T%29 –

+0

“Comparable”是一个通用的'interface',它比较了泛型参数的类型。 –

回答

0

首先,阅读documentation

此接口对每个实现它的类 的对象施加总排序。这种排序被称为类的 自然排序,而类的compareTo方法被称为 其自然比较方法。

documentation of the compareTo()方法:

比较与指定对象此对象为顺序。返回 负整数,零或正整数,因为此对象比指定对象的 小,等于或大于此值。

下面是一个示例:

public class MyComparable implements Comparable<MyComparable>{ 

    private int value; 

    @Override 
    public int compareTo(MyComparable other) { 
     return this.value - other.value; 
    } 

    public MyComparable(int i) { 
     value = i; 
    } 

    public static void main(String[] args) { 
     MyComparable _12 = new MyComparable(12); 
     MyComparable _42 = new MyComparable(42); 
     MyComparable _12bis = new MyComparable(12); 
     System.out.println(_12.compareTo(_42)); 
     System.out.println(_42.compareTo(_12)); 
     System.out.println(_12.compareTo(_12bis)); 
    } 
} 

它OUPUTS:

-30 
30 
0 
  • -30(< 0)意味着12 < 42,毫不奇怪
  • 30(> 0 )意味着42> 12,好吧
  • 0(= 0)意思是12等于12,似乎是正确的
1

Comparable是一个接口,因此它不包含逻辑。 implement Comparable的具体类必须实现.compareTo()方法,详见here

实现此接口意味着您希望该类能够将自己与另一个实例进行比较,并返回一个数值,表示它应该被视为比传入的实例“更大”或“更小”。这通常用于在收藏中进行排序。

例如:

public class Node implements Comparable<Node> { 

    private int id; 
    private String name; 

    public int compareTo(Node other) { 
     return (this.id < other.id) ? -1 : (this.id > other.id) ? 1 : 0; 
    } 
} 
相关问题