If you are not using any languages other than English, then a HashMap is overkill: you can simply use an array of 26 counts representing A..Z. If you need to support Unicode then the problem is of course much more complicated, as not only do you need to deal with possibly thousands of different kinds of letters, but you also have to define 'letter' (fortunately there exists character property data