## Why is this an issue?

Because `Object` implements `hashCode`, any Java class can be put into a hash structure. However, classes that define `equals(Object)` but not `hashCode()` aren’t truly hash-able because instances that are equivalent according to the `equals` method can return different hashes.

### Noncompliant code example

    public class Student {  // no hashCode() method; not hash-able
      // ...

      public boolean equals(Object o) {
        // ...
      }
    }

    public class School {
      private Map<Student, Integer> studentBody = // okay so far
              new HashTable<Student, Integer>(); // Noncompliant

      // ...

### Compliant solution

    public class Student {  // has hashCode() method; hash-able
      // ...

      public boolean equals(Object o) {
        // ...
      }
      public int hashCode() {
        // ...
      }
    }

    public class School {
      private Map<Student, Integer> studentBody = new HashTable<Student, Integer>();

      // ...