LINQ сингл в Java? - PullRequest
       16

LINQ сингл в Java?

1 голос
/ 26 ноября 2010

Есть ли эквивалент JavaQ Single в Java?Возможно в лямбдай ?

Ответы [ 4 ]

8 голосов
/ 26 ноября 2010

Довольно просто реализовать себя, если честно:

public static <T> T single(Iterable<T> source) {
  Iterator<T> iterator = source.iterator();
  if (!iterator.hasNext()) {
    throw new IllegalArgumentException("No elements");
  }
  T first = iterator.next();
  if (iterator.hasNext()) {
    throw new IllegalArgumentException("More than one element");
  }
  return first;
}

(Или поместите его в универсальный класс вместо того, чтобы делать метод универсальным. Вы также можете решить использовать другой тип исключения.)

3 голосов
/ 26 ноября 2010
0 голосов
/ 11 июня 2015

Если вы можете использовать мою библиотеку xpresso , вы можете написать: x.list(iterable).toScalar();

0 голосов
/ 26 ноября 2010

Менее оборонительная версия решения @ Jon.

Collection<T> coll;
T first = col.iterator().next();

Добавить чеки по вкусу.

...