Naming a method hashcode() or equal is either:
Object.hashCode() (note the camelCasing) or Object.equals (note the 's' on
the end) was meant, and the application does not behave as expected. In both cases, the method should be renamed.
public int hashcode() { /* ... */ } // Noncompliant
public boolean equal(Object obj) { /* ... */ } // Noncompliant
@Override
public int hashCode() { /* ... */ }
public boolean equals(Object obj) { /* ... */ }