Reason to use:
- Abstracts and captures the idea of cycling through a collection.
- Since the idea is so general, it is typically supported
  by programming languages. If you implement an iterator
  in python, you can 'for x in c:', if you implement an 
  iterator in Java you can 'for(x:c){ ... }'.
- Used by [], ArrayList, Set, ... so you can in general
  cycle through any of the elements of these.

  https://sourcemaking.com/design_patterns/iterator
  https://www.oodesign.com/iterator-pattern.html
  
  and in the Java API
  https://docs.oracle.com/en/java/javase/22/docs/api/java.base/java/util/Iterator.html
  https://docs.oracle.com/en/java/javase/22/docs/api/java.base/java/lang/Iterable.html
  
  
  