我正在学习lambdaj,每次我需要完成一项任务时,我必须检查现有的示例并对它们进行修改,以便使用LambdaJ。
我已经开始使用它了,但是我想我遗漏了一些想问你的东西。
我不清楚如何使用having方法。我不明白它是怎么工作的,我怎么能用它。
我已经调试、解压缩和阅读了它的文档,但我没有找到“思维方式”lambda。
having javadoc说:
静态HasArgumentWithValue (一个参数,org.hamcrest.Matcher匹配器) 创建一个hamcrest匹配器,如果给定参数的值满足传递匹配器定义的条件,则该匹配器将求值为true。
我在下面的例子中使用了having:
List<User> result = filter(having(on(User.class).getAge(), greaterThan(20)), list);我了解到,having对一个参数应用了一个有害匹配器,并在列表中重复了这一点。
但我的问题是,拥有是如何运作的?我怎么看待lambdaj的功能?
发布于 2014-05-29 23:33:54
代码的描述可能如下所示:
the function filter take each user from list and
apply it over function having
that retrieved the age and compare with value of 20. 这可以写成
private List<User> filter(List<User> users) {
final List<User> filtered = new ArrayList<>();
for(User user : users) {
if(having(user.getAge(),greaterThan(20)) {
filtered.add(user);
}
}
return filtered;
}
private boolean having(Integer age, org.hamcrest.Matcher<Integer> matcher) {
return matcher.matcher(age);
}换句话说,函数有两个参数,一个是值,另一个是匹配,并根据值对匹配器进行评估。值参数由函数筛选器传递,函数过滤器期望结果为布尔值。
https://stackoverflow.com/questions/23900452
复制相似问题