//: c08:StrSortList.java // From Thinking in Java, 2nd Edition // Available at http://www.BruceEckel.com // (c) Bruce Eckel 1999 // Copyright notice in Copyright.txt // Automatically sorted ArrayList that // accepts and produces only Strings package c08; import java.util.*; public class StrSortList { private SortList v = new SortList( // Anonymous inner class: new Compare() { public boolean lessThan(Object l, Object r) { return ((String)l).toLowerCase().compareTo( ((String)r).toLowerCase()) < 0; } public boolean lessThanOrEqual(Object l, Object r) { return ((String)l).toLowerCase().compareTo( ((String)r).toLowerCase()) <= 0; } } ); private boolean sorted = false; public void add(String s) { v.add(s); sorted = false; } public String get(int index) { if(!sorted) { v.sort(); sorted = true; } return (String)v.get(index); } public Iterator iterator() { if(!sorted) { v.sort(); sorted = true; } return v.iterator(); } // Test it: public static void main(String[] args) { StrSortList sv = new StrSortList(); sv.add("d"); sv.add("A"); sv.add("C"); sv.add("c"); sv.add("b"); sv.add("B"); sv.add("D"); sv.add("a"); Iterator e = sv.iterator(); while(e.hasNext()) System.out.println(e.next()); } } ///:~