Java - 什么数据结构为预加载字符串数组提供最快的性能并检查字符串是否存在?

Gen*_*nik 0 java string data-structures

我有一个国家代码列表,如我们,fra,英国等.

我需要预加载它们并检查是否存在字符串.我可以使用的表现最快的数据结构是什么,因为比较字符串可能是资源密集型的?

我应该创建一个静态的字符串数组或ArrayList或其他东西吗?

谢谢!

tem*_*def 6

如果你有一组固定的短字符串并想测试给定的字符串是否在其中,你可能想要使用a HashSet<String>,它提供极快的查找并且可以非常快速地回答你的查询.例如:

Set<String> myStrings = new HashSet<String>();
myStrings.add("us");
myStrings.add("fra");
/* ... */
if (myStrings.contains("test-string")) {
   // String is there.
} else {
   // Nope!  String is not there.
}
Run Code Online (Sandbox Code Playgroud)

如果你有一大堆更长的字符串,trie将是一个合适的(但空间效率稍差)数据结构.如果您事先知道正在使用哪些字符串并且该集合永远不会更改,请考虑查看DAWG数据结构.这些都不是Java标准库的一部分,尽管快速谷歌搜索应该提供有关这两者的信息.

希望这可以帮助!