首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Lambdaj如何工作?

Lambdaj如何工作?
EN

Stack Overflow用户
提问于 2014-05-27 23:16:55
回答 1查看 441关注 0票数 0

我正在学习lambdaj,每次我需要完成一项任务时,我必须检查现有的示例并对它们进行修改,以便使用LambdaJ。

我已经开始使用它了,但是我想我遗漏了一些想问你的东西。

我不清楚如何使用having方法。我不明白它是怎么工作的,我怎么能用它。

我已经调试、解压缩和阅读了它的文档,但我没有找到“思维方式”lambda。

having javadoc说:

静态HasArgumentWithValue (一个参数,org.hamcrest.Matcher匹配器) 创建一个hamcrest匹配器,如果给定参数的值满足传递匹配器定义的条件,则该匹配器将求值为true。

我在下面的例子中使用了having

代码语言:javascript
复制
List<User> result = filter(having(on(User.class).getAge(), greaterThan(20)), list);

我了解到,having对一个参数应用了一个有害匹配器,并在列表中重复了这一点。

但我的问题是,拥有是如何运作的?我怎么看待lambdaj的功能?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-05-29 23:33:54

代码的描述可能如下所示:

代码语言:javascript
复制
the function filter take each user from list and 
 apply it over function having 
   that retrieved the age and compare with value of 20. 

这可以写成

代码语言:javascript
复制
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);
}

换句话说,函数有两个参数,一个是值,另一个是匹配,并根据值对匹配器进行评估。值参数由函数筛选器传递,函数过滤器期望结果为布尔值。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23900452

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档