You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

过滤含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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.07 07:29:07