猿问

用于在列表中查找出现的 Java 流

我正在尝试使用执行以下操作的 Java 流编写此代码 -

获取 KeyValuePairs 列表和 ListOfValues,并<Value, boolean>根据 ListOfKeyValuePairs 中是否存在值填充值来自 ListOfValues 的 Map,布尔值设置为 true 或 false。

我正在开始类似的事情:

keyValuePairs.stream().map(KeyValuePair::getValue) ...

但无法完成它:(

例子:

List<KeyValuePairs> has {(1, A1), (2,A2), (3,A3)}
ListofValues has {A1,A3}

最终结果:带有值的映射:A1,真和 A3,真


元芳怎么了
浏览 100回答 1
1回答

慕容708150

List<KeyValuePairs>可以转换为 aSet<Value>以加速进一步的查找:var&nbsp;set&nbsp;=&nbsp;pairs.stream() &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.map(KeyValuePair::getValue) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.collect(Collectors.toSet());然后,如果生成的地图不应该包含在 中未找到的元素,请pairs通过set::contains以下方式将它们过滤掉:var&nbsp;map&nbsp;=&nbsp;list.stream() &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.filter(set::contains) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.collect(Collectors.toMap(Function.identity(),&nbsp;i&nbsp;->&nbsp;true));如果生成的地图应包含来自 的每个元素list,无论它们是否已被找到:var&nbsp;map&nbsp;=&nbsp;list.stream() &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.collect(Collectors.toMap(Function.identity(),&nbsp;set::contains));
随时随地看视频慕课网APP

相关分类

Java
我要回答