我想知道Comparable在Java中比较的接口。 假设我有两个节点,每个节点只有一个实例变量。 node1.compareTo(node2)如何工作?Java中的接口Comparable比较什么?
谢谢!
我想知道Comparable在Java中比较的接口。 假设我有两个节点,每个节点只有一个实例变量。 node1.compareTo(node2)如何工作?Java中的接口Comparable比较什么?
谢谢!
首先,阅读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
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;
}
}
我们展示Node.compareTo的'代码()',我们可以告诉你它进行比较。 –
http://docs.oracle.com/javase/6/docs/api/java/lang/Comparable.html#compareTo%28T%29 –
“Comparable”是一个通用的'interface',它比较了泛型参数的类型。 –