How to get maximum value from the Collection (for example ArrayList)?

In Java, default methods are methods that are defined in an interface and have a default implementation. They were introduced in Java 8 as a way to add new functionality to interfaces without breaking backward compatibility.

One of the challenges with default methods is that they can cause issues with method resolution when a class implements multiple interfaces that define default methods with the same signature. This is known as the "diamond problem," and it can result in ambiguous method calls that the Java compiler cannot resolve.

To avoid this issue, the Java compiler includes a set of rules for resolving ambiguous method calls involving default methods. These rules are designed to choose the most specific implementation of the method in cases where multiple interfaces define a default method with the same signature.

There are situations where the Java compiler does not complain about ambiguous method calls involving default methods, even though the method resolution rules might not be able to uniquely determine the correct implementation. This can happen when the class that is implementing the interfaces also overrides the default method, in which case the override takes precedence and the ambiguity is resolved.

Here's an example of a class that implements two interfaces with default methods and overrides one of the methods:

class MyClass implements Interface1, Interface2 {
  @Override
  public void myMethod() {
    // implementation goes here
  }
}

In this example, MyClass implements both Interface1 and Interface2, which both define a default method called myMethod. Since MyClass provides its own implementation of myMethod, the Java compiler does not complain about an ambiguous method call, even though the method resolution rules might not be able to uniquely determine which default implementation to use.

I hope this helps! Let me know if you have any questions.