import java.util.Iterator; import java.util.ArrayList; import java.util.List; import java.util.HashSet; import java.util.Hashtable; import java.util.Set; public class Iter { public static void main(String args[]) { // Demonstrating a function that iterates through a collection of // items, yet is agnostic with respect to what particular type of // collection it is: List people = new ArrayList(); people.add("Rae"); people.add("Lizzy"); people.add("TJ"); people.add("Marina"); printMsg("love", people.iterator()); Set activities = new HashSet(); activities.add("xtreme rock climbing"); activities.add("martial arts"); activities.add("reading"); activities.add("reading"); activities.add("videogames"); activities.add("videogames"); activities.add("running"); activities.add("videogames"); activities.add("biking"); activities.add("biking"); activities.add("biking"); activities.add("biking"); activities.add("biking"); activities.add("biking"); printMsg("do", activities.iterator()); Hashtable heroes = new Hashtable(); heroes.put("Batman","Bruce"); heroes.put("Superman","Clark"); heroes.put("Wonder Woman","Diana"); heroes.put("Iron Man","Tony"); printMsg("admire",heroes.keySet().iterator()); printMsg("am acquainted with",heroes.values().iterator()); // Demonstrating simultaneous iterators on the same collection that do // not interfere with each other: Iterator i1 = people.iterator(); System.out.println("i1 just gave me: " + i1.next()); System.out.println("i1 just gave me: " + i1.next()); Iterator i2 = people.iterator(); System.out.println("i1 just gave me: " + i1.next()); System.out.println("i2 just gave me: " + i2.next()); System.out.println("i2 just gave me: " + i2.next()); System.out.println("i2 just gave me: " + i2.next()); System.out.println("i1 just gave me: " + i1.next()); System.out.println("i2 just gave me: " + i2.next()); } private static void printMsg(String verb, Iterator names) { while (names.hasNext()) { System.out.println("I " + verb + " " + names.next() + "!"); } } }