Groovy中如何过滤键长度小于13的Map?现有代码无法实现
解决Map过滤键长度的问题
你的代码问题出在错误使用了each方法——each仅负责遍历集合,不会过滤元素,最终返回的还是原集合。要实现需求,需把键长度的判断直接放在findAll的闭包条件里。
正确代码示例
Map<String, String> maps = entriesOnlyOnLeft.findAll { entry -> entry.key != null && entry.key.length() < 13 }
代码说明
findAll是Groovy中用于过滤集合的方法,会返回符合闭包条件的元素组成的新Map- 先判断
entry.key != null,避免原Map存在空键时触发空指针异常 - 再通过
entry.key.length() < 13筛选出键长度小于13的键值对
验证输出
执行上述代码后,打印keySet即可得到目标结果:
log.info("Key Map ---> " + maps.keySet())
内容的提问来源于stack exchange,提问作者Bufank85
相关产品推荐
相关产品推荐

