从集合中获取第一个(也是唯一的值)

时间:2013-01-16 09:59:09

标签: java collections

  

可能重复:
  Java: Get first item from a collection

在Java中,我经常会遇到一个包含一个元素的集合,我需要检索它。因为集合不保证一致的排序,所以没有first()get(int index)方法,因此我需要使用相当丑陋的东西,例如:

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

那么,如何获得唯一的元素?我无法相信没有更好的方法......

请注意,我知道没有“第一”的概念,我只是试图避免在我知道只有一个元素的情况下构建迭代器。

编辑:Peter Wooster发现了一个非常相似的问题here。我将这个开放,因为我不是想要获得“第一”元素,这意味着一致的排序,但在检查它确实是唯一的元素之后是“唯一的”元素。

3 个答案:

答案 0 :(得分:23)

最简单的答案就是你做过的事情!

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

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

答案 1 :(得分:13)

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

答案 2 :(得分:0)

它很简单,

 Iterator<Integer> itr = collection.iterator(); 
 Object firstObj = itr.hasNext()? itr.next() : null;