Я хотел бы знать, могу ли я получить первый элемент списка или набора. Какой метод использовать?
Как получить первый элемент списка или набора?
Ответ 1
Collection c;
Iterator iter = c.iterator();
Object first = iter.next();
(Это самое близкое к тому, что вы получите "первый" элемент Set
. Вы должны понимать, что он не имеет абсолютно никакого смысла для большинства реализаций Set
. Это может иметь значение для LinkedHashSet и TreeSet, но не для HashSet.)
Ответ 2
См. javadoc
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
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();
}
Аналогичным образом можно получить первый элемент списка.
Надеюсь, что это поможет.
Ответ 9
Менее полированное решение может быть даже
T first = null; //or "empty" placeholder
for(T elem: mySet /* or myList */){
first = elem;
break;
}
if (first != null) {
//Do something
}