26

可能重复:
Java:从集合中获取第一项

在 Java 中,我经常遇到一个包含一个元素的集合,我需要检索它。因为集合不保证顺序一致,没有first()orget(int index)方法,所以我需要使用比较难看的东西,比如:

public Integer sillyExample(Collection<Integer> collection){
    if(collection.size()==1){
        return collection.iterator().next();
    }
    return someCodeToDecideBetweenElements(collection);
}

那么,如何取出唯一的元素呢?我不敢相信没有更好的方法...

请注意,我知道没有“第一”的概念,当我知道其中只有一个元素时,我只是想避免构建迭代器。

编辑:彼得伍斯特在这里发现了一个非常相似的问题。我将其保持打开状态,因为我不是试图获取“第一个”元素,这意味着一致的顺序,而是在检查它确实是唯一元素之后的“唯一”元素。

4

3 回答 3

28

最简单的答案是你做了什么!

first = collection.iterator().next();

请注意, iterator() 是一种方法,这是一个错字吗?

于 2013-01-16T10:10:15.457 回答
16

你看过谷歌番石榴吗?如果您知道该集合只有一个元素则可以使用Iterables.getOnlyElement(collectionWithOneElement);,但如果您不知道但仍只想要您可以使用的第一个元素getFirst(Iterable, T default)。如果它为空,它还将返回您定义的默认值。

于 2013-01-16T10:11:24.707 回答
2

就这么简单,

 Iterator<Integer> itr = collection.iterator(); 
 Object firstObj = itr.hasNext()? itr.next() : null;
于 2013-01-16T10:33:26.220 回答