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



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

547   9  

9 ответов:

Collection c;

Iterator iter = c.iterator();

Object first = iter.next();

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

см. javadoc

на список

list.get(0);

или Set

set.iterator().next();

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

!list_or_set.isEmpty()

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

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

(полезно, если набор/список может быть пустым.)

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

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)

Set

set.toArray()[0];

список

list.get(0);

предположим, что у вас есть List<String> strings что вы хотите первый пункт из.

есть несколько способов сделать это:

Java (pre-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);

следовать или помещенный внутри соответствующие проверки или блоки try-catch.

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

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

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

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

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

надеюсь, что это помогает.

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

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

Comments

    Ничего не найдено.