java - 创建 n 个保存对象的数组的最佳方法

标签 java arrays object arraylist

有点卡住了,任何意见都将不胜感激。
概要:

我有一个字符串数组列表。

我有一个 for 循环遍历所述 ArrayList。

当循环开始时,它会创建一个 ArrayList(我们称之为 list1)。

如果不满足字符串条件(.match 为 false),则它将当前元素放入先前创建的 ArrayList 中。 (列表1)

如果当前元素满足字符串条件(.match 为 true),它将创建一个新的 ArrayList。 (我们称之为列表2)

如果下一个字符串不满足条件(.match 为 true),它将将该元素放入先前创建的 ArrayList (list2)

如果不满足条件,则不断循环创建 ArrayList;如果满足条件,则将元素放入先前创建的 ArrayList 中。它会执行此操作直到 for 循环结束。

备注:
新创建的 ArrayList 将保存基于当前字符串元素的对象,为了简单地解释它,我省略了该部分。

由于我从未动态创建过 ArrayList,因此我不知道如何执行此操作。请记住,我不仅仅是问如何动态创建 ArrayList,因为我知道这个问题已经在这里得到了回答。

请询问您是否需要澄清这一点的任何部分,我有程序员的心态,这在我的脑海中完全有意义,但很难用外行人的术语来解释。

通用代码示例:

for(int i=0; i<fileList.size(); i++) {
        ArrayList <question> list1= new ArrayList <question> ();

        if(fileList.get(i).matches("^[|]+[|]+[|]+[1-9]+")) {
            ArrayList <question> listN= new ArrayList <question> ();
        }
        else
            currentArray.add(fileList.get(i)); //CurrentArray is what ever the last created ArrayList is
    }

最佳答案

ArrayList<ArrayList<Question>> lists= new ArrayList<>();
lists.add(new ArrayList<Question>());        

for(int i=0; i<fileList.size(); i++) {

    if(fileList.get(i).matches("^[|]+[|]+[|]+[1-9]+")) {
         lists.add(new ArrayList<Question>());
    } else {
        lists.get(lists.size() - 1).add(fileList.get(i));
    }

}

我认为 Question 是一个对象,如果不是,你可以用 String 替换它。评论中提到的想法是在循环之前构建“问题列表”列表。这样以后就可以用了。此外,如果 fileList 中的第一项始终匹配,那么您不需要在进入循环之前创建列表。

关于java - 创建 n 个保存对象的数组的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55798871/

相关文章:

java - 摆脱 "The value for annotation attribute must be a constant expression"消息

java - 如何打印数组的元素

php - 使用 PHP 和 Mysql Foreach 循环创建多维数组

java - 当参数之一为 TBD 时,如何初始化对象

javascript - 如何递归返回具有完整路径的对象数组和嵌套对象键?

java - 创建 JDBC 连接时的行业标准是什么?

java - 对arraylist中的异构元素进行排序

javascript - 选择整个字典的值

java - 如何使用 Android 自动化修复 "UnsupportedCommandException: actions"错误

java - 数组是否有类似迭代器的函数(或解决方法)?