簡體   English   中英

Java 8流過濾:IN子句

[英]Java 8 stream filtering: IN clause

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

如何使用謂詞模擬一個典型的IN子句(如在mysql或JPA中)?

我決定將我的評論更新為答案。 您請求的Predicate<Y> (其中Y應該是具體類型)的lambda表達式如下所示:

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]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM