你知道,相当于:
<T> T single(List<T> list) {
assertEquals(1, list.size());
return list.get(0);
}
lambdaj 是否包含类似的东西?
lambdaj具有selectUnique方法,如果有多个项目满足给定 hamcrest Matcher 表示的条件,则该方法会引发异常。由于您没有要匹配的任何特定条件,因此您需要一个始终返回 true 的 Matcher(在我看来,hamcrest 并没有提供开箱即用的 Matcher,但实现它很简单),或者也许您想检查列表中的(唯一)对象是否至少不为空,因此您可以通过以下方式实现此结果:
selectUnique(list, Matchers.notNullValue());
不完全一样,但 Java 有一种方法可以创建保证只有一个元素的列表(和其他集合)。看看 Collections.singleton* 方法。请注意,这些集合是不可变的(在构造中提供了条目)。
Guava有一种Iterables.getFirst()
方法可以做到这一点。
如果您可以使用我的xpresso库,您可以编写:
x.list(iterable).toScalar();