Anu*_*aya 5 java optimization if-statement contains
我想知道是否有任何方法可以优化此代码。
String[] array;
for(String s:array){
if(s.contains("one"))
//call first function
else if(s.contains("two"))
//call second function
...and so on
}
Run Code Online (Sandbox Code Playgroud)
字符串基本上是我从文件中读取的行。所以可以有很多行。我必须在这些行中查找特定的关键字并调用相应的函数。
这不会阻止您进行多次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);
}};
Run Code Online (Sandbox Code Playgroud)
然后,您可以遍历条目集:
for(final String s : array) {
for(final Map.Entry<String, Runnable> entry : lookup) {
if (s.contains(entry.getKey())) {
entry.getValue().run();
break;
}
}
}
Run Code Online (Sandbox Code Playgroud)