Dav*_*vid 5 java arrays string
我目前有一个String数组,我需要多次搜索才能完全匹配.什么是最好的数据结构?
Example - String array with elements
cat
dog
squirrel
raccoon
aardvark
Run Code Online (Sandbox Code Playgroud)
java代码接收字符串搜索并遍历数组:
我目前的代码执行以下操作:
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循环时要避免的相同的不良性能.