如何获得列表或集的第一个元素?

我想知道我是否能得到一个列表或集合的第一个元素。使用哪种方法?

938020 次浏览
Collection c;


Iterator iter = c.iterator();


Object first = iter.next();

(这是最接近Set的“第一个”元素。你应该意识到,对于Set的大多数实现来说,它是绝对没有意义的。这可能对LinkedHashSet和TreeSet有意义,但对HashSet没有意义。)

可以使用get(index)方法访问List中的元素。

根据定义,集合只是包含元素,没有特定的顺序。因此,您无法获得“first”元素,但可以使用迭代器(使用for每个循环)遍历它,或使用toArray()方法将其转换为数组。

请看javadoc

列表

list.get(0);

set.iterator().next();

并在使用上述方法之前通过调用isEmpty()检查大小

!list_or_set.isEmpty()

这不是这个问题的确切答案,但如果对象应该排序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那样)

在Java >=8中,你也可以使用流式API:

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

(如果Set/List可能为空,则有用。)

set.toArray()[0];

列表

list.get(0);

我很惊讶没有人提出番石榴解决方案:

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<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 (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块中。

芬兰湾的科特林:

在Kotlin中,数组和大多数集合(例如:List)都有一个first方法调用。 代码看起来是这样的

有关名单:

val stringsList: List<String?> = listOf("a", "b", null)
val first: String? = stringsList.first()

对于数组:

val stringArray: Array<String?> = arrayOf("a", "b", null)
val first: String? = stringArray.first()

后面跟着或封装在适当的检查或try-catch块中。

Kotlin还为kotlin.collections提供了更安全的方法,例如firstOrNullgetOrElse,或使用JRE8时的getOrDefault