从Groovy Map中删除给定键

时间:2013-05-31 15:28:26

标签: map groovy httprequest

我确信这是一个非常简单的问题,但我对Groovy很新,这是我一直在努力的一段时间。我有一个HttpServletRequest,我需要对它的参数做些什么。但是,我想要完全排除1个参数。

以前,我正在使用

req.getParameterMap

然而,要删除一个值,我正在尝试一些

的内容
def reqParams = req.getParameterMap?.remove('blah');

我知道上面的内容不太合适,但这就是我想要实现的伪代码。我真的需要新的Map和原始req.getParameterMap()对象看起来完全一样,除了一个缺失的键。实现这一目标的最佳方法是什么?谢谢!

2 个答案:

答案 0 :(得分:51)

req.getParameterMap返回一个无法修改的不可变映射。您需要从参数图创建一个新地图putAll,然后删除您不需要的所需密钥。

def reqParams = [:] << req.getParameterMap()
reqParams.remove('blah')

您的新地图为reqParams(没有不需要的键值对)和原始参数地图。

答案 1 :(得分:5)

您可以使用findAll函数,例如:

def map = req.getParameterMap().findAll {it.key != 'blah'}