[英]Java 8 Nested Streams Filtering
這是我的課程:
class File {
String id;
String name;
List<Metadata> metadata;
}
class Metadata {
String key;
String value;
}
我有一個文件List<File>
( List<File>
),我想首先按 File 的名稱過濾,然后從Metadata
列表中按匹配的鍵和值過濾。
假設,我想返回名稱為“movie.mp4”的文件的id
,其元數據之一應具有key=="genre"
和value=="Horror"
。
使用 Java 8 Streams,我可以按 File 的名稱進行過濾,但不確定如何下一級並按匹配的鍵和值進行過濾。
我該怎么做呢?
在metadata
上調用stream()
並測試是否有任何key
和value
符合您的條件。 就像是,
fileList.stream().filter(f -> f.name.equals("movie.mp4")
&& f.metadata.stream().anyMatch(x -> x.key.equals("genre")
&& x.value.equals("Horror")));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.