Как я могу получить первый элемент из отсортированного списка?

Я использовал Collections.sort(playersList); к виду a List. Так, я думаю playersList отсортирован теперь. Но как я могу получить первый элемент списка? playersList[0] не работает.

25
задан jjnguy 23 March 2010 в 20:42
поделиться

6 ответов

playersList.get(0)

Java имеет ограниченный полиморфизм операторов. Таким образом, вы используете метод get () для объектов List , а не оператор индекса массива ([])

82
ответ дан 28 November 2019 в 17:42
поделиться

Если ваша коллекция не является List (и, следовательно, вы не можете использовать get (int index) ), то вы можете использовать итератор:

Iterator iter = collection.iterator();
if (iter.hasNext()) {
    Object first = iter.next();
}
0
ответ дан 28 November 2019 в 17:42
поделиться

Это зависит от типа вашего списка, для ArrayList используйте:

list.get(0);

для LinkedList используйте:

list.getFirst();

если вам нравится подход array :

list.toArray()[0];
3
ответ дан 28 November 2019 в 17:42
поделиться

Вы должны обращаться к спискам немного иначе, чем к массивам в 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) время.

10
ответ дан 28 November 2019 в 17:42
поделиться

Ответ Мэтью правильный:

list.get(0);

Чтобы сделать то, что вы пробовали:

list[0];

вам придется подождать, пока Java 7 не будет выпущена:

DevOxx конференция http: //img718.imageshack .us / img718 / 11 / capturadepantalla201003cg.png

Вот интересная презентация Марка Рейнхольда о Java 7

Похоже, сайт переговоров в настоящее время не работает, попробуйте позже :(

1
ответ дан 28 November 2019 в 17:42
поделиться

Если вы просто хотите получить минимум списка, вместо того, чтобы сортировать его и затем получать первый элемент (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)

.
0
ответ дан 28 November 2019 в 17:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: