The issue of ensuring that the data types of a collection match the data types required by a certain class (like a comparator) is a bit tricky in Java... and is solved by the use of "Generics". e.g. new ArrayList<String>
The book is sidestepping around the issue of Generics... probably because it doesn't want to complicate the general design principles (which are sound) with another discussion of a (rather complex) Java language feature.
For example, ArrayList is a "generic" type in Java that can be "parameterized" by the type of data that it stores (in this case String).
Similarly, the real Java library has Comparator be a generic type, that can be parameterized with the type of data that it compares as well. So you'd have your concrete custom comparator class implement Comparator<String> and then it could sort String (or if you wanted, List<String>). And you could have another custom comparator that compared PotteryOrder objects that implements Comparator<PotteryOrder>.
I can't explain everything about Generics here, but it's easy to find more information online... just Google around!