创建n个包含对象的数组的最佳方法

时间:2019-04-22 18:02:41

标签: java arrays object arraylist

有点卡住,任何输入将不胜感激。
摘要:

我有一个字符串的ArrayList。

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

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

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

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

如果下一个字符串不符合条件(.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
    }

1 个答案:

答案 0 :(得分:2)

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中的第一项始终匹配,那么您无需在进入循环之前创建列表。