Un consejo, los caracteres pueden ser convertidos en un int y viceversa.
Si utilizas ese valor como índice, puedes evitarte ese monstruoso switch y hacer uno más pequeño para los casos especiales como la ñ.
a(97)
b(98)
http://www.bbdsoft.com/ascii.html
array[(int) caracter - 97] += 1
Sobre tu pregunta, si sabes el número de palabras que quieres guardar, usa un array estático, si no usa uno dinámico.
http://download.oracle.com/javase/6/...ArrayList.html
Lo que no entiendo es que seas capaz de almacenar caracteres en un array, y que no veas que almacenar palabras se hace igual.