26

重複の可能性:
Java: コレクションから最初のアイテムを取得する

Java では、取得する必要がある 1 つの要素を持つコレクションによく遭遇します。コレクションは一貫した順序付けを保証しないため、first()orget(int index)メソッドはありません。

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

では、どのようにして唯一の要素を取り出すのでしょうか? もっと良い方法がないなんて信じられない…

「最初」の概念がないことは理解していることに注意してください。要素が1つしかないことがわかっているときにイテレータを作成しないようにしています。

編集: Peter Wooster は、非常によく似た質問をここで見つけました。一貫した順序付けを意味する「最初の」要素を取得しようとしているのではなく、それが実際に唯一の要素であることを確認した後の「唯一の」要素を取得しようとしているので、これを開いたままにします。

4

3 に答える 3

28

最も簡単な答えは、あなたが何をしたかです!

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

iterator() はメソッドであることに注意してください。それはタイプミスでしたか?

于 2013-01-16T10:10:15.457 に答える
16

Google Guava を見たことがありますか? コレクションに含まれる要素が 1 つだけであることがわかっている場合は、使用できます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 に答える