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

Miq*_*uel 22 java collections

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

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

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

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

请注意,我理解没有"第一"的概念,我只是试图避免构建迭代器,因为我知道它只有一个元素.

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

Pet*_*ter 25

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

first = collection.iterator().next();
Run Code Online (Sandbox Code Playgroud)

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


小智 13

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

  • ...它对迭代器的作用完全可以预测,就像我在问题中的评论一样.这可能会让您放心,这种方法是最好的. (2认同)