Java 8 流过滤:IN 子句

2024-04-25

List<Y> tmp= new DATA<Y>().findEntities();
List<X> tmp1 = new DATA<X>().findEntities().stream().filter(
                        IN (tmp) ???
                ).collect(Collectors.toList());

如何使用 Predicate 模拟典型的 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]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java 8 流过滤:IN 子句 的相关文章

随机推荐