作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
List<Y> tmp= new DATA<Y>().findEntities();
List<X> tmp1 = new DATA<X>().findEntities().stream().filter(
IN (tmp) ???
).collect(Collectors.toList());
如何使用谓词模拟典型的 IN 子句(如在 mysql 或 JPA 中)?
最佳答案
我决定将我的评论更新为一个答案。您请求的 lambda 表达式 Predicate<Y>
(其中 Y 应该是具体类型)如下所示:
element -> tmp.contains(element)
因为集合的contains
方法与谓词的 test
具有相同的签名方法,您可以使用方法引用(这里是实例方法引用):
tmp::contains
一个完整的例子:
List<Number> tmp = Arrays.asList(1, 2, 3);
List<Integer> tmp1 = Arrays
.stream(new Integer[] { 1, 2, 3, 4, 5 })
.filter(tmp::contains)
.collect(Collectors.toList());
System.out.println(tmp1);
这打印
[1, 2, 3]
关于Java 8 流过滤 : IN clause,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26161830/
我是一名优秀的程序员,十分优秀!