A common requirement when working with maps is to:

  • Update the value if a given key already exists
  • Set the value if it doesnโ€™t

You may be tempted to implement some conditional logic to handle this:

class ShoppingCart {
  final Map<String, int> items = {};
 
  void add(String key, int quantity) {
    if (items.containsKey(key)) {
      // item exists: update it
      items[key] = quantity + items[key]!;
    } else {
      // item does not exist: set it
      items[key] = quantity;
    }
  }
}

Alternatively, a shorter version would be:

class ShoppingCart {
  final Map<String, int> items = {};
 
  void add(String key, int quantity) {
    // add 0 if items[key] does not exist
    items[key] = quantity + (items[key] ?? 0);
  }
}

Either way, the code is not very readable.

And the update() method offers a simpler (and more expressive) way of doing the same thing: ๐Ÿ‘‡

class ShoppingCart {
  final Map<String, int> items = {};
 
  void add(String key, int quantity) {
    items.update(
      key,
      (value) => quantity + value,
      ifAbsent: () => quantity,
    );
  }
}

Learn more here: Map.update() method.

Happy coding!