为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

元芳怎么了 2021-11-24 15:11:58
我正在尝试使用执行以下操作的 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));


查看完整回答
反对 回复 2021-11-24
  • 1 回答
  • 0 关注
  • 99 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信