To add great answers to others. In the Collections interface, this interface defines the equals method to make some decisions about how equal two instances of the collection should work. From the JAVA 8 documentation :
In a more general case, implementations of the various interfaces of the Collection Framework can freely use the specified behavior of the underlying Object methods, if the developer considers it appropriate.
This way, you are not adding methods from the Object class for any other reason that makes the Java document more specific. That is why you do not take these methods into account in abstract methods in abstract interface methods.
In addition, in JAVA 8, according to the same reasoning scheme, the default methods from the Object class are not allowed and will generate a compilation error. I believe this was done to prevent this type of confusion. So if you try to create a default hashCode () method, for example, it will not compile.
Here is a more detailed explanation of this behavior in the JAVA 8 of the Lambda FAQ :
An interface cannot provide a default implementation for any of the methods of the Object class. This is a consequence of the "win class" rule for method resolution: a method found in a chain of superclasses always takes precedence over any default methods that appear in any superinterface. In particular, this means that you cannot provide a default implementation for equals, hashCode or toString from an interface.
This seems strange at first, given that some interfaces actually define the behavior of peers in the documentation. The List interface is an example. So why not allow it?
One reason is that it becomes harder to talk about when the default method is called. The current rules are simple: if a class implements a method, it always defeats the default implementation. Since all instances of interfaces are subclasses of Object, all instances of interfaces already have implementations other than the default: equals, hashCode, and toString. Therefore, their default version on the interface is always useless and may not compile.
Another reason is that providing the default implementation of these methods in an interface is most likely a mistake. These methods perform calculations based on the state of objects, but the interface, as a rule, does not have access to state; only the implementing class has access to this state. Therefore, the class itself must provide implementations, and the default methods are unlikely to be useful.