java - map 需要过滤没有 tmst 值

标签 java hashmap

在下面的 map 中,如果键包含“tmst”,我必须删除键和值

输入映射:

{"sun":"test", "row_mod_tmst":"10:05:20", "when" :"yesterday"}

输出映射:

{"sun":"test", "when" :"yesterday"}

我已经尝试过如下,但不起作用

 Map<String, Object> withoutTMST = map.entrySet().stream().filter(entry -> (!entry.getKey().endsWith("tmts"))).
                    collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));

最佳答案

我只是从 map 中删除这些条目,而不是创建新的 map 对象。

Collection#removeIf是一个很好的候选者,应用于 map 的 entrySet()

对于删除条件,我会结合使用 containstoLowerCase()

这是代码:

map.entrySet().removeIf(entry -> entry.getKey().toLowerCase().contains("tmst"));

输入:

{ sun=test, row_mod_tmst=10:05:20, when=yesterday }

输出:

{ sun=test, when=yesterday }

关于java - map 需要过滤没有 tmst 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60930161/

相关文章:

java - 如何在 hql 或 jpql 查询中查询两个不同的数据库(在不同的服务器上)?

javascript - 检查 onPageFinished 是否完成

Java GUI 搜索目录文件

java - JSTL 访问 HashMap 中的整数/长键

java - 通过 HashMap 进行迭代(复杂性)

java - 使用基于 Zip 2.0 加密的密码加密 zip 文件

java - OpenCSV:如何使用自定义列标题和自定义列位置从 POJO 创建 CSV 文件?

java - 如何拆分 map 中的值

c# - JSON 字符串到 C# 中的模型/HashMap/字典

java - 如何将一个 HashMap 中的值与另一个 HashMap 中的相同值进行比较?