Data structure for getting all matches of a prefix from a large list of strings
For a fixed-length prefix, store them in a hash table.  For a variable-length prefix, use a trie.

If you have a static list and don't need to support insertions or deletions into the list, storing them in sorted order by lexicographic order also works, as you can use binary search to find the matches (they will all be consecutive).