我有下面的代码片段
String s = "Downloaded";
Map<String, List<String>> m = Map.ofEntries(
Map.entry("Download", List.of("Download", "Downloading,", "Downloaded")) ,
Map.entry("Upload", List.of("Upload", "Uploading,", "Uploaded"))
);
我想流过这个映射,如果 s 与 List 中的任何项目部分匹配(这是映射的键之一的值),我想返回该键。我该如何使用 Streams?另外,要求是只要其中一个字符串是
s
的超字符串,我仍然可以返回密钥。
您可以创建地图条目流。按您的标准过滤。然后从任何匹配的条目中提取密钥。收集那些提取的钥匙。
Collection < String > keys =
map
.entrySet()
.stream()
.filter( ( Map.Entry < String, List<String> > entry ) -> entry.getValue().contains( s ) )
.map( Map.Entry :: getKey )
.collect( Collectors.toUnmodifiableList() ) ;
请参阅此 在 Ideone.com 上运行的代码。
[下载]