8

Would it be possible to remove bunch of keys from a map in one single statement like this,

Map<String, String> colorCodes = 
   new Map<String, String>();

colorCodes.put('Red', 'FF0000');
colorCodes.put('Blue', '0000A0');

String myColor = colorCodes.remove('Blue','Red'); //this line throwing error

1 Answer 1

17

In your above example as per doc , Map's remove method takes in only one key as argument and returns a value as return type. you cannot pass a list of strings to the remove method, though I tried something like below based on java's removeall ( undocumented in salesforce map methods )

https://stackoverflow.com/questions/17675804/remove-multiple-keys-from-map-in-efficient-way

http://www.salesforce.com/us/developer/docs/dbcom_apex250/Content/apex_methods_system_map.htm

Map<String, String> colorCodes = 
   new Map<String, String>();

colorCodes.put('Red', 'FF0000');
colorCodes.put('Blue', '0000A0');
colorCodes.put('Blue2', '0000A0');
set<string> remove_keys = new set<string>{'Red','Blue'};
    colorCodes.keySet().removeAll(remove_keys);
system.debug('#### Map after removing keys'+ colorCodes);

13:30:38.052 (52492111)|SYSTEM_METHOD_ENTRY|[9]|System.debug(ANY) 13:30:38.052 (52504469)|USER_DEBUG|[9]|DEBUG|#### Map after removing keys{Blue2=0000A0}

4
  • I did not know that existed, good find Commented Jul 29, 2014 at 20:35
  • Thanks @rao. I did not see it in the documentation. Somewhat missed from there. Thanks a lot.
    – Bforce
    Commented Jul 29, 2014 at 20:37
  • I try java syntax in apex and sometimes find hidden bounties like this :P
    – Rao
    Commented Jul 29, 2014 at 20:37
  • 1
    This is actually documented method on Set: salesforce.com/us/developer/docs/dbcom_apex230/Content/… KeySet - is a set, and it has removeAll method.
    – Patlatus
    Commented May 29, 2015 at 13:42

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .