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


当前回答

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

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

list.get(0);

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

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

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

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

同样,可以检索列表的第一个元素。

希望这能有所帮助。

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

Collection c;

Iterator iter = c.iterator();

Object first = iter.next();

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