Solution to 8a61: Int set
See code at solutions/code/tutorialquestions/question8a61
You will see that I decided to implement MemoryEfficientIntSet using
an ArrayList, and SpeedEfficientIntSet using a HashSet.
In the implementation of readIntegers(int n) in Demo.java, the key observation is that we can write:
IntSet result = (n > 10 ? new MemoryEfficientIntSet() : new SpeedEfficientIntSet());
to create either a MemoryEfficientIntSet or a SpeedEfficientIntSet depending on
n. Whichever kind of set is created, the resulting reference is stored in result which
has type IntSet. This means that thereafter we can manipulate the set through the IntSet
interface regardless of its actual type.