如何避免调用同一个方法三次,这种情况下的最佳做法是什么?或者说这是正确的方法吗?
我首先检查列表是否为空,然后再次检查以确保列表不为空,因为不想打印空列表。
public class RegExpTest_1 {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<String>();
list.add("item1");
list.add("#item2");
list.add("item3");
list.add("&item4");
list.add("item5");
ArrayList<String> list1 = new ArrayList<String>();
list1.add("item1");
list1.add("item2");
list1.add("item3");
list1.add("item4");
list1.add("item5");
if (StringUtils.isNotEmpty(finditem(list)) || StringUtils.isNotEmpty(finditem(list1))){ // calling method
if (StringUtils.isNotEmpty(finditem(list))) { //calling same method
System.out.println("List :\n" + finditem(list)); //calling same method
}
if (StringUtils.isNotEmpty(finditem(list1))) {
System.out.println("List :\n" + finditem(list1));
}
}
} //main
public static String finditem(ArrayList<String> alist){
StringBuilder sb = new StringBuilder();
String re1=".*?"; // Non-greedy match on filler
String re2="(^#|^&)"; // Word 1
Pattern p = Pattern.compile(re1+re2,Pattern.CASE_INSENSITIVE | Pattern.DOTALL);
for (String str:alist) {
Matcher m = p.matcher(str);
if (m.find()) {
// System.out.println("found" + m.group(1));
sb.append(str);
sb.append("\n");
} else {
// System.out.print("not found");
}
}
return sb.toString();
}
}
最佳答案
外部的 if 语句是多余的。只需使用两个内部 if 语句即可。
例如
if (StringUtils.isNotEmpty(finditem(list))) { //calling same method
System.out.println("List :\n" + finditem(list)); //calling same method
}
if (StringUtils.isNotEmpty(finditem(list1))) {
System.out.println("List :\n" + finditem(list1));
}
关于使用返回类型调用方法的 Java 最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37500552/