我正在尝试使用执行以下操作的 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,真
1 回答
慕容708150
TA贡献1831条经验 获得超4个赞
List<KeyValuePairs>
可以转换为 aSet<Value>
以加速进一步的查找:
var set = pairs.stream() .map(KeyValuePair::getValue) .collect(Collectors.toSet());
然后,如果生成的地图不应该包含在 中未找到的元素,请pairs
通过set::contains
以下方式将它们过滤掉:
var map = list.stream() .filter(set::contains) .collect(Collectors.toMap(Function.identity(), i -> true));
如果生成的地图应包含来自 的每个元素list
,无论它们是否已被找到:
var map = list.stream() .collect(Collectors.toMap(Function.identity(), set::contains));
添加回答
举报
0/150
提交
取消