在下面的 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()
。
对于删除条件,我会结合使用 contains
和 toLowerCase()
。
这是代码:
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/