first speed up - switch ArrayList<String> to HashMap<String, Integer>
Use of StringTokenizer minimized. String interning done.