java - "||"和循环哪个更有效?

标签 java if-statement for-loop performance

假设您必须从数组列表中编辑一系列单词(“cat”,“dog”,“catdog”,“mandog”)

现在您可以将其放入 for 循环中,如下所示

 for(int i=0; i<arraylist.size(); i++){
    if(arraylist.get(i).matches("cat") || arraylist.get(i).matches("dog") etc.. etc..
      {
        //do something
      }
   }

或者您可以将单词(cat、dog、catdog 和 mandog)放入字符串数组/数组列表中,并使用它进行比较。

哪个效率更高?

考虑到单词列表可能会很大。

感谢您的帮助。

最佳答案

两者的性能差异都可以忽略不计,它们在时间上与关键字列表的大小呈线性关系。

考虑到单词列表可能会变得相当大,您应该使用Set。一个HashSet可以在恒定时间内执行 contains 检查,使其非常适合此目的。所以:

Set<String> keywords = new HashSet<>();

keywords.add("cat");
keywords.add("dog");
// ...

for (String element: arraylist) {
    if (keywords.contains(element)) {
        // Do something
    }
}

请注意,使用 matches 实际上与使用 equals 相同,因此我们可以简单地测试是否相等。

关于java - "||"和循环哪个更有效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24536316/

相关文章:

python - Concat string if 条件,否则什么都不做

javascript - 使用 for 循环时出现 "Uncaught SyntaxError: Unexpected token ;"错误

java - for 循环是导致此代码中错误的原因吗?

java - 如何不将组合对象包含到 json 中?

java - 文件名包含斜杠标点符号并在线程 "main"java.io.FileNotFoundException : foo/boo/en_en. json 中给出异常(没有这样的文件或目录)

python - 代码一次又一次地循环

javascript - Javascript 是否有类似于 Java 的增强的 for 循环语法

java - 在 Servlet 中提交表单而不刷新页面

java - 如何在java中将proj_id的值设置为max(proj_id) + 1

javascript 警报不能与 if 语句一起正常工作