假设您必须从数组列表中编辑一系列单词(“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/