Я использовал Collections.sort(playersList);
к виду a List
. Так, я думаю playersList
отсортирован теперь. Но как я могу получить первый элемент списка? playersList[0]
не работает.
playersList.get(0)
Java имеет ограниченный полиморфизм операторов. Таким образом, вы используете метод get ()
для объектов List
, а не оператор индекса массива ([]
)
Если ваша коллекция не является List
(и, следовательно, вы не можете использовать get (int index)
), то вы можете использовать итератор:
Iterator iter = collection.iterator();
if (iter.hasNext()) {
Object first = iter.next();
}
Это зависит от типа вашего списка, для ArrayList
используйте:
list.get(0);
для LinkedList
используйте:
list.getFirst();
если вам нравится подход array
:
list.toArray()[0];
Вы должны обращаться к спискам немного иначе, чем к массивам в Java. Для получения дополнительной информации см. javadocs для интерфейса List
.
playersList.get(0)
Однако, если вы хотите найти наименьший элемент в PlayersList
, вам не следует сортировать его, а затем получать первый элемент. Это выполняется очень медленно по сравнению с простым поиском в списке наименьшего элемента.
Например:
int smallestIndex = 0;
for (int i = 1; i < playersList.size(); i++) {
if (playersList.get(i) < playersList.get(smallestIndex))
smallestIndex = i;
}
playersList.get(smallestIndex);
Приведенный выше код найдет наименьший элемент в O (n)
вместо O (n log n)
время.
Ответ Мэтью правильный:
list.get(0);
Чтобы сделать то, что вы пробовали:
list[0];
вам придется подождать, пока Java 7 не будет выпущена:
DevOxx конференция http: //img718.imageshack .us / img718 / 11 / capturadepantalla201003cg.png
Вот интересная презентация Марка Рейнхольда о Java 7
Похоже, сайт переговоров в настоящее время не работает, попробуйте позже :(
Если вы просто хотите получить минимум списка, вместо того, чтобы сортировать его и затем получать первый элемент (O(N log N)
), вы можете сделать это за линейное время, используя min
:
<T extends Object & Comparable<? super T>> T min(Collection<? extends T> coll)
Сначала это выглядит ужасно, но, глядя на ваши предыдущие вопросы, у вас есть List
. Короче говоря: min
работает с ним.
Для длинного ответа: все эти super
и extends
в ограничениях общих типов - это то, что Джош Блох называет принципом PECS (обычно представленным рядом с фотографией Арнольда - Я НЕ ШУЧУ! )
Producer Extends, Consumer Super
По сути, это делает дженерики более мощными, поскольку ограничения становятся более гибкими, сохраняя при этом безопасность типов (см.: в чем разница между 'super' и 'extends' в Java Generics)
.