Если вы просто хотите получить минимум списка, вместо того, чтобы сортировать его и затем получать первый элемент (O(N log N)
), вы можете использовать сделать это за линейное время, используя min
:
<T extends Object & Comparable<? super T>> T min(Collection<? extends T> coll)
Поначалу это выглядит ужасно, но, глядя на ваши предыдущие вопросы, у вас есть List<String>
. Короче говоря: min
работает на нем.
Для длинного ответа: все эти вещи super
и extends
в ограничениях универсального типа - это то, что Джош Блох называет принципом PECS (обычно представлен рядом с картиной Арнольда - Я НЕ ЗНАЮ!)
Производитель расширяется, потребительский супер
По сути, это делает дженерики более мощными, поскольку ограничения являются более гибкими, сохраняя при этом безопасность типов (см .: В чем разница между "super" и "extends" в Java Generics )