快速查找Java

Dav*_*vid 5 java arrays string

我目前有一个String数组,我需要多次搜索才能完全匹配.什么是最好的数据结构?

Example - String array with elements

cat
dog
squirrel
raccoon
aardvark
Run Code Online (Sandbox Code Playgroud)

java代码接收字符串搜索并遍历数组:

  1. 查询'dogg' - 什么都不返回
  2. 查询'浣熊' - 返回浣熊

我目前的代码执行以下操作:

for (String element : myList) {
      if (element.equals(searchTerm)) {
            return searchTerm;
      }
}
Run Code Online (Sandbox Code Playgroud)

有没有更有效的方法来进行此搜索?我想过使用Map,但我想不出一个好的值(关键是'dog'/'cat'/ etc ....).我应该为密钥和值使用相同的值吗?是否有更好的数据结构可供使用?

Rav*_*yal 10

使用HashSet此处获得最佳查找性能.请注意,Set不允许任何重复.使用a Map在这里没有多大意义,因为你只对搜索键感兴趣,即你没有任何与之相关的东西.

示例代码:

Set<String> animals = new HashSet<String>(
                          Arrays.asList("cat", "dog", "squirrel", "raccoon"));
if (animals.contains("dog")) {
    System.out.println("Yep, dog's here!"); // prints
}
if (!animals.contains("aardvark")) {
    System.out.println("Ah, aardvark's missing!"); // prints
}
Run Code Online (Sandbox Code Playgroud)

注意,a List也有一个contains()方法,但它遍历其所有元素,以检查项目是否存在与使用for循环时要避免的相同的不良性能.