groovy-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Gerald Wiltse <jerrywil...@gmail.com>
Subject Re: Looping through a hashmap & removing elements
Date Mon, 06 Jun 2016 21:35:46 GMT
Guy,

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
jerrywiltse@gmail.com


On Thu, Jun 2, 2016 at 2:56 PM, Guy Matz <guymatz@gmail.com> wrote:

> Ahh!!  I only saw this removeAll:
> public boolean *removeAll*(Object[]
> <http://docs.oracle.com/javase/7/docs/api/java/lang/Object%5B%5D.html>
> items)
>
> !!  Thanks!!!
>
> On Thu, Jun 2, 2016 at 2:27 PM, Winnebeck, Jason <
> Jason.Winnebeck@windstream.com> 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.
>>
>>
>>
>> Jason
>>
>>
>>
>> *From:* Guy Matz [mailto:guymatz@gmail.com]
>> *Sent:* Thursday, June 02, 2016 2:18 PM
>> *To:* users@groovy.apache.org
>> *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 = iter.next()
>>     key = entry.key
>>     value = entry.value
>>
>>     if (bla, blah, blah) {
>>
>>         iter.remove()
>>
>>     }
>>
>>
>>
>> Is there a groovier way?
>>
>>
>>
>> Thanks!
>>
>> Guy
>>
>> ------------------------------
>> 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.
>>
>
>

Mime
View raw message