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