Подтвердить что ты не робот

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

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

4b9b3361

Ответ 1

playersList.get(0)

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

Ответ 2

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

Ответ 3

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

list.get(0);

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

list.getFirst();

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

list.toArray()[0];

Ответ 4

Используя потоки Java 8, вы можете превратить свой список в поток и получить первый элемент в списке с помощью метода .findFirst().

List<String> stringsList = Arrays.asList("zordon", "alpha", "tommy");
Optional<String> optional = stringsList.stream().findFirst();
optional.get(); // "zordon"

Метод .findFirst() возвращает Optional, который может содержать или не содержать строковое значение (он может не содержать значения if stringsList пуст).

Затем, чтобы развернуть элемент из опции Необязательный, используйте метод .get().

Ответ 5

Ответ Matthew верен:

list.get(0);

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

list[0];

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

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

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

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

Ответ 6

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

Iterator iter = collection.iterator();
if (iter.hasNext()) {
    Object first = iter.next();
}

Ответ 7

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