Removing a Given Key from a Groovy Map

JToland picture JToland · May 31, 2013 · Viewed 46.6k times · Source

I'm sure this is a very simple question, but I'm very new to Groovy and it's something I've been struggling with for awhile now. I have an HttpServletRequest and I need to do something with it's parameters. However, I want to exclude exactly 1 parameter.

Previously, I was using

req.getParameterMap

However, to remove the one value, I'm trying something along the lines of

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

I know that the above does not quite work, but that's the psuedo-code for what I'm trying to achieve. I really need the new Map and the original req.getParameterMap() Objects to look exactly the same except for the one missing key. What's the best way to achieve this? Thanks!

Answer

dmahapatro picture dmahapatro · May 31, 2013

req.getParameterMap returns an immutable map which cannot be modified. You need to create a new map, putAll from the parameter map and remove the required key you do not want.

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

You have your new map as reqParams (without the undesired key value pair) and the original parameter map.