有点卡住了,任何意见都将不胜感激。
概要:
我有一个字符串数组列表。
我有一个 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/