有点卡住,任何输入将不胜感激。
摘要:
我有一个字符串的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
}
答案 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中的第一项始终匹配,那么您无需在进入循环之前创建列表。