Что такое Java эквивалентно оператору Single () в C #? - PullRequest
4 голосов
/ 04 января 2011

Вы знаете, что-то эквивалентное:

<T> T single(List<T> list) {
  assertEquals(1, list.size());
  return list.get(0);
}

Содержит ли lambdaj что-то подобное?

Ответы [ 4 ]

1 голос
/ 05 января 2011

lambdaj имеет метод selectUnique , который выдает исключение, если существует более одного элемента, удовлетворяющего условию, выраженному данным Matcher хамкрестом. Поскольку у вас нет конкретного условия для сопоставления, вам нужен Matcher, который всегда возвращает true (мне не кажется, что Hamcrest предоставляет такой Matcher "из коробки", но реализовать его тривиально), или возможно, вы хотели бы проверить, что (единственный) объект в списке, по крайней мере, не равен нулю, чтобы вы могли достичь этого результата с помощью:

selectUnique(list, Matchers.notNullValue());
0 голосов
/ 11 июня 2015

Если вы можете использовать мою библиотеку xpresso , вы можете написать:

x.list(iterable).toScalar();
0 голосов
/ 04 января 2011

Гуава имеет метод Iterables.getFirst(), который делает именно это.

0 голосов
/ 04 января 2011

Не совсем то же самое, но в Java есть способ создавать списки (и другие коллекции), которые гарантированно имеют только один элемент.Взгляните на Collections.singleton * методы.Обратите внимание, что эти коллекции являются неизменяемыми (запись указана в конструкциях).

...