Ответ 1
Самый простой ответ - это то, что вы сделали!
first = collection.iterator().next();
Обратите внимание, что итератор() является методом, был ли опечаток?
Возможный дубликат:
Java: получить первый элемент из коллекции
В Java я часто встречаю коллекцию с одним единственным элементом, который мне нужно получить. Поскольку коллекции не гарантируют согласованного упорядочения, нет методов first()
или get(int index)
, поэтому мне нужно использовать довольно уродливые вещи, например:
public Integer sillyExample(Collection<Integer> collection){
if(collection.size()==1){
return collection.iterator().next();
}
return someCodeToDecideBetweenElements(collection);
}
Итак, как вы получаете единственный элемент? Я не могу поверить, что нет лучшего способа...
Обратите внимание: я не понимаю понятия "первый", я просто пытаюсь избежать создания итератора, когда знаю, что в нем есть только один элемент.
EDIT: Питер Вустер нашел очень похожий вопрос здесь. Я оставляю это открытым, потому что я не пытаюсь получить "первый" элемент, что подразумевает последовательный порядок, но элемент "один и единственный" после проверки того, что он действительно является единственным элементом.
Самый простой ответ - это то, что вы сделали!
first = collection.iterator().next();
Обратите внимание, что итератор() является методом, был ли опечаток?
Вы когда-нибудь смотрели Google Guava? Если вы знаете, что в коллекции есть только один элемент , вы можете использовать Iterables.getOnlyElement(collectionWithOneElement);
, но если вы не знаете, но хотите только первый элемент, вы можете использовать getFirst(Iterable, T default)
. Он также вернет значение по умолчанию, которое вы определяете, если оно пустое.
Это так просто,
Iterator<Integer> itr = collection.iterator();
Object firstObj = itr.hasNext()? itr.next() : null;