我想知道是否有任何方法可以优化此代码。
String[] array;
for(String s:array){
if(s.contains("one"))
//call first function
else if(s.contains("two"))
//call second function
...and so on
}
字符串基本上是我从文件中读取的行。因此可以有很多行。我必须在这些行中查找特定的关键字并调用相应的函数。
最佳答案
这不会阻止您的代码执行许多 String#contains
调用,但是,它会避免 if/else
链接..
您可以创建一个键函数映射,然后遍历此映射的条目以找到要调用的方法。
public void one() {...}
public void two() {...}
private final Map<String, Runnable> lookup = new HashMap<String, Runnable>() {{
put("one", this::one);
put("two", this::two);
}};
然后您可以遍历条目集:
for(final String s : array) {
for(final Map.Entry<String, Runnable> entry : lookup) {
if (s.contains(entry.getKey())) {
entry.getValue().run();
break;
}
}
}
关于java - 如何替换多个if-else语句来优化代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40110120/