我有以下对象Node
:
private class Node implements Comparable<Node>(){
private String guid();
...
public boolean equals(Node o){
return (this == o);
}
public int hashCode(){
return guid.hashCode();
}
public int compareTo(Node o){
return (this.hashCode() - o.hashCode());
}
...
}
我在下面使用它TreeMap
:
TreeMap<Node, TreeSet<Edge>> nodes = new TreeMap<Node, TreeSet<Edge>>();
现在,树形图用于一个名为的类中Graph
,用于存储图中当前的节点,以及它们的一组边(来自类Edge
)。我的问题是当我尝试执行时:
public containsNode(n){
for (Node x : nodes.keySet()) {
System.out.println("HASH CODE: ");
System.out.print(x.hashCode() == n.hashCode());
System.out.println("EQUALS: ");
System.out.print(x.equals(n));
System.out.println("CONTAINS: ");
System.out.print(nodes.containsKey(n));
System.out.println("N: " + n);
System.out.println("X: " + x);
System.out.println("COMPARES: ");
System.out.println(n.compareTo(x));
}
}
我有时会得到以下信息:
哈希码:真等于:真包含: 假N:foo X:foo 比较:0
任何人都知道我做错了什么?我对这一切还是陌生的,所以如果我忽略了一些简单的事情,我提前道歉(我知道hashCode()
这对 来说并不重要TreeMap
,但我想我会包括它)。
edit1:添加了compareTo()
方法信息。