Согласованные результаты Equals (), но несовместимые результаты TreeMap.containsKey ()

У меня есть следующий объект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() Информация о методе.

Ответы на вопрос(3)

Ваш ответ на вопрос