【问题标题】:Remove values from Map while comparing the values against a List从 Map 中删除值,同时将值与 List 进行比较
【发布时间】:2019-08-07 01:38:21
【问题描述】:

初学者QQ:我有一个列表和一个地图 .我需要对照“列表”检查“地图”中的所有值,如果该值在地图中但不在列表中,那么我需要将其删除

    List<String> list = getRequiredList();
    Set<String> set = new HashSet<>(list)
    Map<String, String> map = getMap(); 

如果地图不在列表中,需要一些关于如何从地图中删除的信息

【问题讨论】:

  • map.putIfAbsent(str); 无效 - 您的列表中的值是代表地图的键还是值?

标签: java java-8


【解决方案1】:

关于 Maps 的一个巧妙之处在于 key setvalue collection 都由 Map 本身提供支持。这意味着从键集中删除一个键实际上是从它所属的 Map 中删除它。

因此,您可以在密钥集上使用retainAll

map.keySet().retainAll(list);

这将确保 Map 中唯一的键是列表中的字符串。

【讨论】:

    猜你喜欢
    • 2021-12-13
    • 1970-01-01
    • 2019-04-20
    • 2020-11-23
    • 2021-01-08
    • 1970-01-01
    • 2021-12-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多