过滤含tmst键的Map:Java Stream过滤代码失效求助
问题排查与修正方案
嘿,我一眼就揪出问题所在啦!你的代码里有两个小失误导致没达到预期效果:
- 拼写错误:你在过滤条件里写的是
endsWith("tmts"),但目标要匹配的字符串是"tmst"(看输入里的键是row_mod_tmst),字母顺序写错了,把tmst拼成了tmts,自然匹配不到要过滤的键。 - 匹配逻辑偏差:你的需求是移除包含"tmst"的键值对,但你用了
endsWith()方法——这个方法只会匹配以指定字符串结尾的键。如果后续出现键里"tmst"在中间的情况,这个逻辑就会失效。改用contains()才能准确匹配所有包含"tmst"的键。
修正后的代码
Map<String, Object> withoutTMST = map.entrySet().stream() .filter(entry -> !entry.getKey().contains("tmst")) .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
用你的测试输入{"sun":"test", "row_mod_tmst":"10:05:20", "when":"yesterday"}运行这段代码,就能得到你期望的输出{"sun":"test", "when":"yesterday"}啦。
内容的提问来源于stack exchange,提问作者vigneshwaran m
相关产品推荐
相关产品推荐

