This is supposed to be the fastest.
Uggh. Something can only be "supposedly fastest" for a very narrowly defined set of operations/assumptions.
If you care about speed and size here's some thoughts.
The dictionary is dynamic because obviously it changes at runtime rather than being fixed. Ya know, like: foobaz suddenly becomes a legal word. The real cost of dynamic data-structures is visiting randomize memory. You mention android so it would be sane to reduce memory size. Speed? How many queries do you expect to perform per game "frame"? Do you need an AI to figure out legal words it can create? If SOWPODS is the real target then the dataset has a fair set of limitations like words are only on 2-15 characters (assuming wikipedia is correct). If you really wanted to be able to check lots of potential words as being legal per frame then bloom filter could be a reasonable idea.