【问题标题】:Best way to create n number of arrays holding objects创建 n 个包含对象的数组的最佳方法
【发布时间】:2019-04-22 18:02:41
【问题描述】:

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

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

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

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

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

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

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

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

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

因为我从来没有动态创建过 ArrayLists,所以我不知道如何做到这一点。请记住,我不仅仅是在问如何动态创建 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> 来添加你的新 ArrayLists。
  • for 循环前:ArrayList&lt;Question&gt; currentArrayList = new ArrayList&lt;Question&gt;(); for 循环内:if(..match..) {currentArrayList = new ArrayList&lt;Question&gt;();} else {currentArrayList.add(...);}
  • 只花了大约 30 分钟打字,请不要告诉我这很简单。谢谢你

标签: java arrays object arraylist


【解决方案1】:
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 替换它。 cmets 中提到的想法是在循环之前构建您的“问题列表”列表。这样你以后就可以使用了。此外,如果 fileList 中的第一项始终匹配,则无需在进入循环之前创建列表。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-22
    相关资源
    最近更新 更多