1. What is the meaning of <? super T> after Comparable???
Comparable itself, is also a generic. And the method is a generic method, that takes a type T. The first parameter is a List of sone type that extends Comparable, which is used to compare some type that is a super of the type specified by the generic method.
...Comparable<? super T>... I believe signifies that whatever type it is that is passed in as a key to binarySearch()will implement Comparable generically, typing the interface for T or anything that T extends (superclasses).
Perhaps it is understood that Comparable is generic for type Object by default.
And that's right about Lists being the only type of Collection that works for sort. You would use the tree
implementations of Set and Map to get sorted content from those collections.