Я хотел бы знать, могу ли я получить первый элемент списка или установить. Какой метод использовать?Как получить первый элемент списка или набора?
ответ
Collection c;
Iterator iter = c.iterator();
Object first = iter.next();
(Это ближайший вы получите к тому, «первый» элемент Set
. Вы должны понимать, что это не имеет абсолютно никакого значения для большинства реализаций Set
. Это может иметь значение для LinkedHashSet и TreeSet , но не для HashSet.)
Вы можете использовать метод get (index) для доступа к элементу из списка.
Устанавливает, по определению, просто элементы и не имеет особого порядка. Поэтому нет элемента «first», который вы можете получить, но через него можно выполнить итерацию с использованием итератора (используя для каждого цикла) или преобразовать его в массив с помощью метода toArray().
Смотрите Javadoc
из List
list.get(0);
или Set
set.iterator().next();
и проверить размер перед использованием вышеописанных способов, вызывая isEmpty()
!list_or_set.isEmpty()
Используйте 'isEmpty()' вместо 'size()> 0'. Это лучше показывает ваши намерения и, возможно, более эффективно (например, LinkList size() - O (n)). –
@SteveKuo LinkedList имеет переменную размера, поэтому size() - O (1). Кроме того, isEmpty() реализуется как size() == 0. – efritz
Всегда используйте 'List.iterator(). Next()' или 'Set.iterator(). Next()', чтобы избежать O (N) для связанных данных структуры, вы никогда не знаете, какую реализацию вы будете получать, и, конечно, проверьте с помощью 'Set.isEmpty()' или 'List.isEmpty() 'по той же причине, для обоих случаев всегда будет O (1) вместо потенциального O (N), если, опять же, реализация связанной структуры данных передается любимым' LinkedList' или 'LinkedHashSet' –
Это не точный ответ на этот вопрос, но в случае, если объекты должны быть отсортированы SortedSet имеет метод первый():
SortedSet<String> sortedSet = new TreeSet<String>();
sortedSet.add("2");
sortedSet.add("1");
sortedSet.add("3");
String first = sortedSet.first(); //first="1"
Отсортированные объекты должны реализовать Сопоставимый интерфейс (например, строка делает)
хорошо иметь доступ к методу 'first', но здесь вопрос касается списка/набора независимо от порядка. – ciekawy
Я знаю, на вопрос был дан ответ, когда я разместил это, это просто означает как соответствующую информацию. Я думал, что, вероятно, кто-то, кто ищет ответ на это, в некоторых случаях захочет работать с отсортированными объектами. Я отредактировал свой ответ. – molholm
В Java> = 8 можно также использовать Streaming API:
Optional<String> first = set.stream().findFirst();
(Полезно, если Set/Список может быть пустым.)
Это выглядит великолепно, но без get() Я не смог бы вызвать результирующие методы, специфичные для элемента. 'set.stream(). FindFirst(). Get() 'позволит вам вызывать любые методы для результирующего объекта. например: 'set.stream(). findFirst(). get(). getMessage()' – Diablo
@Diablo Будьте осторожны, потому что 'get()' будет генерировать исключение, если необязательный пуст. Существует множество других методов на «Факультативном», которые могут быть более подходящими. – Magnilex
, если вы хотите, чтобы он возвращал значение null, просто выполните 'String first = set.stream(). FindFirst(). OrElse (null);' – troosan
Набор
set.toArray()[0];
Список
list.get(0);
'set.toArray() [0]' будет проходить через все содержимое набора для создания массива, чтобы получить только первый элемент, что не очень эффективно. – dpedro
это приведет к очень низкой производительности. – ZetaPR
Для набора этот метод возвращает 'Object', а не тип элемента в' Set'. – Paul
Менее полированный решение может быть даже
T first = null; //or "empty" placeholder
for(T elem: mySet /* or myList */){
first = elem;
break;
}
if (first != null) {
//Do something
}
Почему это было ниспровергнуто? Есть ли что-то, что мне не хватает, потому что это кажется мне несколько верным. –
это эквивалентно решению итератора, гораздо более подробный, я думаю, что это была причина для downvote, хотя это было не мной – borowis
Я удивлен, что никто не предложил гуавы решение еще:
com.google.common.collect.Iterables.get(collection, 0)
// or
com.google.common.collect.Iterables.get(collection, 0, defaultValue)
// or
com.google.common.collect.Iterables.getFirst(collection, defaultValue)
или если вы ожидаете одного элемента:
com.google.common.collect.Iterables.getOnlyElement(collection, defaultValue)
// or
com.google.common.collect.Iterables.getOnlyElement(collection)
java8 и далее
Set<String> set = new TreeSet<>();
set.add("2");
set.add("1");
set.add("3");
String first = set.stream().findFirst().get();
Это поможет вам получить первый элемент списка или набора. Учитывая, что множество или список не пуст (get()
на пустой опциональный выбросит java.util.NoSuchElementException
)
orElse()
могут быть использованы в качестве: (это просто работа вокруг - не рекомендуется)
String first = set.stream().findFirst().orElse("");
set.removeIf(String::isEmpty);
Ниже соответствующий подход:
Optional<String> firstString = set.stream().findFirst();
if(firstString.isPresent()){
String first = firstString.get();
}
Аналогично первый элемент списка может быть восстановлена.
Надеюсь, это поможет.
Предположим, что у вас есть List<String> strings
, из которого вы хотите получить первый элемент.
Есть несколько способов сделать это:
Java (до 8):
String firstElement = null;
if (!strings.isEmpty() && strings.size() > 0) {
firstElement = strings.get(0);
}
Java 8:
Optional<String> firstElement = strings.stream().findFirst();
гуавы
String firstElement = Iterables.getFirst(strings, null);
Apache Commons (4+)
String firstElement = (String) IteratorUtils.get(strings, 0);
Apache Commons (до 4)
String firstElement = (String) CollectionUtils.get(strings, 0);
с последующим или инкапсулированные в соответствующих проверок или попытаться прилов блоки.
- 1. Scala. Получить первый элемент списка
- 2. Получить первый элемент отфильтрованного списка
- 3. Как получить первый элемент списка в JasperReports?
- 4. Как получить первый элемент списка в jsp
- 5. как получить первый элемент из списка Tupled
- 6. установлен первый элемент списка
- 7. Получить первый элемент, который отвечает критери или первый элемент
- 8. получить первый элемент из списка без исключения
- 9. Получить первый элемент списка в EL
- 10. Как выбрать первый элемент набора с JSTL?
- 11. Как изменить элемент списка, щелкнув первый элемент списка в android
- 12. Как удобно получить первый элемент или последний элемент из LinkedHashMap?
- 13. Как получить первый элемент массива
- 14. SSRS Получить первый элемент LookUpSet
- 15. Получить первый элемент списка отсортированного списка SharePoint 2010 C#
- 16. Удалить первый элемент связанного списка
- 17. Django шаблоны Первый элемент списка
- 18. Syncing только первый элемент списка
- 19. jsoup: как получить первый элемент?
- 20. Как получить первый элемент IEnumerable
- 21. Как получить первый элемент CollectionViewSource?
- 22. Как получить первый внутренний элемент?
- 23. Как получить следующий элемент из сопоставленного набора?
- 24. как получить только первый элемент списка touple в массив
- 25. Как я могу получить первый элемент из отсортированного списка?
- 26. JQuery как получить первый элемент списка с дисплеем: ни один
- 27. Как получить первый элемент из списка json в selenium java?
- 28. Как получить первый элемент, выбранный при загрузке списка
- 29. Получить первый элемент списка после того, как заказал по имени
- 30. Как получить первый элемент сложного списка в Python
Комплект не имеет первого элемента. Для списка: list.get (0); –
Что у вас есть, список или набор? Набор может не обязательно быть в каком-либо конкретном порядке ... – NominSim
Вы даже прочитали документацию API для «Список» Java? Подсказка: нет такой вещи, как «первый элемент» в 'Set'. – tobiasbayer