java - 有没有更好的方法从多个字符串数组中查找任何字符串

标签 java string arraylist

在下面的示例中,有一些预定义的字符串数组,我在下面的示例中提到过,现在我的要求是,如果每个数组中存在 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/

相关文章:

android - 尝试获取全局 ArrayList 时获取 NullPointer

java - 使用 ObservableMap 填充并同步 ComboBox?

java - 使用 .split (""从 Android Studio 收到的输入将 Java 中的字符串拆分为数组)

java - 不同 MVC 层之间的数据流

java - 删除两个不同Arraylist之间的公共(public)元素

c - 如何只打印文件名

python - 如何从python中的输入更改脚本

在 Struts2 中使用 JSON RPC 时从未调用过 Java 方法

java - 如何使用 jxl 定期刷新 excel 中的行,同时最后关闭

java - Java中的切片字符串