ERROR - Lambda expression's signature does not match the signature of the functional interface method compare(Object, Object)

Error

Lambda expression's signature does not match the signature of the functional interface method compare(Object, Object)

Error Type

Compile Time ( Java 8 )

Sample Code

Set<Integer> intSet = new HashSet<Integer>();
intSet.add(1);
intSet.add(2);
intSet.add(3);
intSet.add(4);

System.out.println(intSet.stream().collect(Collectors.maxBy(p->((Integer)p))));
   
Cause

maxBy method expects function interface with two arguments.

Possible Resolution

Specify function interface with two object arguments.

Set<Integer> intSet = new HashSet<Integer>();
intSet.add(1);
intSet.add(2);
intSet.add(3);
intSet.add(4);
System.out.println(intSet.stream().collect(Collectors.maxBy((x,y)->((Integer)x).compareTo((Integer)y))));