0

我有一个国家代码列表,例如我们、fra、uk 等。

我需要预加载它们并检查那里是否存在字符串。由于比较字符串可能会占用大量资源,因此我可以使用的最快的数据结构是什么?

我应该制作一个静态的字符串数组还是一个 ArrayList 或其他东西?

谢谢!

4

1 回答 1

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.
}

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

希望这可以帮助!

于 2013-01-06T05:26:08.500 回答