Please note that removeAll can have dramatic negative impact on your application if run on a large scale.  We recently found that it was the cause of CPU spikes on most of our JVM's.  We had to replace all uses of "removeAll()" with "findAll()" or "retainAll()"

These do create new list which uses more RAM.  However, in many cases these days, the RAM is less of an issue than the CPU. 

Gerald R. Wiltse

On Thu, Jun 2, 2016 at 2:56 PM, Guy Matz <> wrote:
Ahh!!  I only saw this removeAll:

public boolean removeAll(Object[] items)

!!  Thanks!!!

On Thu, Jun 2, 2016 at 2:27 PM, Winnebeck, Jason <> wrote:

If you want to actually edit the original map:


def uidMap = [

  a: 123,

  b: 456,

  c: 789



uidMap.entrySet().removeAll { it.key.startsWith('a') }


If you want a new map, emmanuel’s solution using findAll is best.




From: Guy Matz []
Sent: Thursday, June 02, 2016 2:18 PM
Subject: Looping through a hashmap & removing elements


Hi!  I want to loop through a hashmap and delete some elements based on some criteria . . .  I thought there would be some slick groovy method - in the spirit of findAll, etc. - to do this, but couldn't find it . . .  my java developer workmate suggested:


iter = uidMap.entrySet().iterator()
while (iter.hasNext()) {
    entry =
    key = entry.key
    value = entry.value
    if (bla, blah, blah) {
Is there a groovier way?

This email message and any attachments are for the sole use of the intended recipient(s). Any unauthorized review, use, disclosure or distribution is prohibited. If you are not the intended recipient, please contact the sender by reply email and destroy all copies of the original message and any attachments.