java - 使用方法迭代多个预定义的 ArrayList

标签 java arrays arraylist

我已经定义了一些已经填充的 ArrayList。我在数组“tagArrays”中拥有要迭代的所有名称。是否有可能以与我类似的逻辑迭代它们中的每一个。我知道这段代码不会工作,但我不确定代码应该是什么样子。这是我的尝试:

这些已经填充并在 main 方法中定义。

ArrayList<String> KEYWORDS = new ArrayList<String>();
ArrayList<String> CUSTOMERS = new ArrayList<String>();
ArrayList<String> SYSTEM_DEPS = new ArrayList<String>();
ArrayList<String> MODULES = new ArrayList<String>();
ArrayList<String> DRIVE_DEFS = new ArrayList<String>();
ArrayList<String> PROCESS_IDS = new ArrayList<String>();

这是我正在使用的逻辑

public void genericForEachLoop(POITextExtractor te) {

        final String[] tagArrays = {"KEYWORDS", "CUSTOMERS", "SYSTEM_DEPS", "MODULES", "DRIVE_DEFS", "PROCESS_IDS"};
        ArrayList<String> al = new ArrayList<String>();

        for(int i=0; i<tagArrays.length; i++) {
            System.out.println(tagArrays[i]);
            al = tagArrays[i];


            for (String item : al) {
                if (te.getText().contains(item)) {
                    System.out.println(item);
                }
            }
        }
    }

我希望 foreach 循环每次都不同,例如一旦浏览关键字,然后浏览客户等。

最佳答案

在 Java 中不能引用带有字符串值的变量。
您尝试做的事情可以通过反射来执行。
但我不鼓励它:它的可读性较差,更脆弱/更容易出错,并且与“经典”方式相比速度较慢。

作为替代方案,您可以提供 varargsList<String>作为该方法的最后一个参数:

public void genericForEachLoop(POITextExtractor te, String[] tagArrays, List<String>... lists ) {

    int i = 0;
    for(List<String> list : lists) {    

        System.out.println(tagArrays[i]);                   
        for (String item : list) {

            if (te.getText().contains(item)) {
                System.out.println(item);
            }

        }

     i++;
    }
}

并以这种方式调用它:

genericForEachLoop(te, 
   new String[]{"KEYWORDS", "CUSTOMERS", "SYSTEM_DEPS", "MODULES", "DRIVE_DEFS", "PROCESS_IDS"},
   KEYWORDS, CUSTOMERS,SYSTEM_DEPS,MODULES,DRIVE_DEFS,PROCESS_IDS);

关于java - 使用方法迭代多个预定义的 ArrayList,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48498946/

相关文章:

java - Google guava vs Scala 集合框架对比

java - 为什么最终实例变量没有给出默认值?

javascript - 如何根据 JavaScript 中其他 div 的文本内容在图像库中制作标题?

java - 使用 .toString 显示 ArrayList

java - Android OrientationEventListener 进行多次调用

JAVA - 没有临时字符串、数组、Stringbuilder、子字符串的反向字符串

java - 无法按升序对列表进行排序

java - 删除空数组列表中的元素会使我的应用程序崩溃

javascript - AppendChild TypeError 即使 Child 是 HTML

javascript - 如何使用在 React 初始状态中声明的空数组?