什么是Java相当于C#的Single()运算符?

时间:2011-01-04 18:00:37

标签: java linq lambdaj

你知道,相当于:

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

lambdaj是否包含类似的内容?

4 个答案:

答案 0 :(得分:1)

lambdaj具有selectUnique方法,如果有多个项目满足给定的hamcrest匹配器表示的条件,则会抛出异常。由于您没有任何特定条件需要匹配,因此您需要一个始终返回true的匹配器(在我看来,Hamcrest不提供开箱即用的Matcher,但实现它很简单),或者也许您想检查列表中的(唯一)对象是否至少不为null,因此您可以通过以下方式实现此结果:

selectUnique(list, Matchers.notNullValue());

答案 1 :(得分:0)

不完全相同,但Java有一种方法可以创建保证只有一个元素的列表(和其他集合)。看看Collections.singleton *方法。请注意,这些集合是不可变的(在构造中提供了条目)。

答案 2 :(得分:0)

Guava有一个Iterables.getFirst()方法可以完全实现。

答案 3 :(得分:-1)

如果您可以使用我的xpresso库,您可以写:

x.list(iterable).toScalar();
相关问题