在下面的示例中,有一些预定义的字符串数组,我在下面的示例中提到过,现在我的要求是,如果每个数组中存在 boName,我需要调用为特定自定义字段定义的方法。有没有其他方法可以避免多次 for 循环。
public class MyClass {
private static final String[] OTHER_CUSTOM_FIELD_RELATED_BO_NAME = { "A", "B", "C", "D", "E", "F", "G", "H" };
private static final String[] TRANSACTION_CUSTOM_FIELD_RELATED_BO_NAME = { "A", "AB", "CD", "DE", "EG" };
private static final String[] CRM_CUSTOM_FIELD_RELATED_BO_NAME = { "I", "J", "K", "L", "M" };
private static final String[] ITEM_CUSTOM_FIELD_RELATED_BO_NAME = { "N", "O", "P", "Q" };
private static final String[] ENTITY_CUSTOM_FIELD_RELATED_BO_NAME = { "AN", "ZY", "X", "P" };
public static List<String> BusinessObjectDescribe(String boName) {
List<String> fields = new ArrayList<String>();
if (boName != null && !boName.isEmpty()) {
for (String string : OTHER_CUSTOM_FIELD_RELATED_BO_NAME) {
if (boName.equals(string)) {
fields.addAll(getOtherCustomFields());
break;
}
}
for (String string : TRANSACTION_CUSTOM_FIELD_RELATED_BO_NAME) {
if (boName.equals(string)) {
fields.addAll(getTransactionCustomFields());
break;
}
}
for (String string : CRM_CUSTOM_FIELD_RELATED_BO_NAME) {
if (boName.equals(string)) {
fields.addAll(getCRMCustomFields());
break;
}
}
for (String string : ITEM_CUSTOM_FIELD_RELATED_BO_NAME) {
if (boName.equals(string)) {
fields.addAll(getITEMCustomFields());
break;
}
}
for (String string : ENTITY_CUSTOM_FIELD_RELATED_BO_NAME) {
if (boName.equals(string)) {
fields.addAll(getEntityCustomFields());
break;
}
}
}
return fields;
}
}
最佳答案
如果您使用 Java8,您可以利用函数式接口(interface)的优势。只需创建新函数,将数组作为第一个参数,将供应商函数作为第二个参数。在供应商中,您可以传递有关添加的逻辑。并且您需要多次调用该函数而不是重复的代码。
关于java - 有没有更好的方法从多个字符串数组中查找任何字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52963975/