Получение первого (и единственного значения) из коллекции - программирование
Подтвердить что ты не робот

Получение первого (и единственного значения) из коллекции

Возможный дубликат:
Java: получить первый элемент из коллекции

В Java я часто встречаю коллекцию с одним единственным элементом, который мне нужно получить. Поскольку коллекции не гарантируют согласованного упорядочения, нет методов first() или get(int index), поэтому мне нужно использовать довольно уродливые вещи, например:

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

Итак, как вы получаете единственный элемент? Я не могу поверить, что нет лучшего способа...

Обратите внимание: я не понимаю понятия "первый", я просто пытаюсь избежать создания итератора, когда знаю, что в нем есть только один элемент.

EDIT: Питер Вустер нашел очень похожий вопрос здесь. Я оставляю это открытым, потому что я не пытаюсь получить "первый" элемент, что подразумевает последовательный порядок, но элемент "один и единственный" после проверки того, что он действительно является единственным элементом.

4b9b3361

Ответ 1

Самый простой ответ - это то, что вы сделали!

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

Обратите внимание, что итератор() является методом, был ли опечаток?

Ответ 2

Вы когда-нибудь смотрели Google Guava? Если вы знаете, что в коллекции есть только один элемент , вы можете использовать Iterables.getOnlyElement(collectionWithOneElement);, но если вы не знаете, но хотите только первый элемент, вы можете использовать getFirst(Iterable, T default). Он также вернет значение по умолчанию, которое вы определяете, если оно пустое.

Ответ 3

Это так просто,

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