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

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

Ответ 1

Collection c;

Iterator iter = c.iterator();

Object first = iter.next();

(Это самое близкое к тому, что вы получите "первый" элемент Set. Вы должны понимать, что он не имеет абсолютно никакого смысла для большинства реализаций Set. Это может иметь значение для LinkedHashSet и TreeSet, но не для HashSet.)

Ответ 2

См. javadoc

List

list.get(0);

или Set

set.iterator().next();

и проверьте размер перед использованием вышеуказанных методов, вызвав isEmpty()

!list_or_set.isEmpty()

Ответ 3

В Java >= 8 вы также можете использовать Streaming API:

Optional<String> first = set.stream().findFirst();

(Полезно, если Set/List может быть пустым.)

Ответ 4

Я удивлен, что никто еще не предложил решение guava:

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)

Ответ 5

Это не точный ответ на этот вопрос, но в случае сортировки объектов SortedSet имеет метод first():

SortedSet<String> sortedSet = new TreeSet<String>();
sortedSet.add("2");
sortedSet.add("1");
sortedSet.add("3");
String first = sortedSet.first(); //first="1"

Сортированные объекты должны реализовывать интерфейс Comparable (например, String)

Ответ 6

Set

set.toArray()[0];

Список

list.get(0);

Ответ 7

Вы можете использовать метод get (index) для доступа к элементу из списка.

Устанавливает, по определению, просто содержит элементы и не имеет особого порядка. Поэтому нет элемента "first", который вы можете получить, но через него можно выполнить итерацию с использованием итератора (используя для каждого цикла) или преобразовать его в массив с помощью метода toArray().

Ответ 8

и далее

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();
}

Аналогичным образом можно получить первый элемент списка.

Надеюсь, что это поможет.

Ответ 9

Менее полированное решение может быть даже

T first = null; //or "empty" placeholder
for(T elem: mySet /* or myList */){
    first = elem;
    break;
}
if (first != null) {
    //Do something
}