Avoid Collection Modification During Iteration

 class​ Inventory {
 
 private​ List<Supply> supplies = ​new​ ArrayList<>();
 
 void​ disposeContaminatedSupplies() {
 for​ (Supply supply : supplies) {
 if​ (supply.isContaminated()) {
» supplies.remove(supply);
  }
  }
  }
 }

We iterate over arrays, lists, or other data structures all the time. Most of the time, we only read from those data structures—for instance, when creating an invoice from a list of ordered items or searching for an item in a list by name. But you need to be careful when you modify the structure. Otherwise, you risk crashing your program.

This code describes a fairly simple iteration over a data structure: a List of supplies. If a Supply isContaminated(), the inventory ...

Get Java By Comparison now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.