LINQ的java单曲?

时间:2010-11-26 17:16:32

标签: java linq lambdaj

在java中是否有等同于LINQ的Single?也许在lambdaj

4 个答案:

答案 0 :(得分:8)

说实话,这很容易实现自己:

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;
}

(或者将它放在泛型类中,而不是使方法通用。您也可以决定使用不同的异常类型。)

答案 1 :(得分:3)

答案 2 :(得分:0)

@ Jon的解决方案的防御性较弱的版本。

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

添加检查品尝。

答案 3 :(得分:-1)

如果您可以使用我的xpresso库,您可以写:x.list(iterable).toScalar();