Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何重复添加到ArrayList<;ArrayList<;字符串>&燃气轮机;仅使用一个循环和一个其他ArrayList<;字符串>;?_Java_Android - Fatal编程技术网

Java 如何重复添加到ArrayList<;ArrayList<;字符串>&燃气轮机;仅使用一个循环和一个其他ArrayList<;字符串>;?

Java 如何重复添加到ArrayList<;ArrayList<;字符串>&燃气轮机;仅使用一个循环和一个其他ArrayList<;字符串>;?,java,android,Java,Android,我是java新手,我希望有一个字符串数组列表(mainList),其中包含未知数量的字符串集,这些字符串集只能作为单个字符串提取,不能作为列表一起提取 我的想法是重复地将集合的每个字符串追加到ArrayList(list2),将list2追加到mainList的末尾,然后清空ArrayList,然后将下一个集合的每个字符串追加到list2,追加该字符串,清空列表,重复。我已经包括了一个我试图执行的示例: private ArrayList<ArrayList<String&g

我是java新手,我希望有一个字符串数组列表(mainList),其中包含未知数量的字符串集,这些字符串集只能作为单个字符串提取,不能作为列表一起提取

我的想法是重复地将集合的每个字符串追加到ArrayList(list2),将list2追加到mainList的末尾,然后清空ArrayList,然后将下一个集合的每个字符串追加到list2,追加该字符串,清空列表,重复。我已经包括了一个我试图执行的示例:

    private ArrayList<ArrayList<String>> mainList = new ArrayList<>();

    private ArrayList<String> list2 = new ArrayList<>();



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

     for (int j = 0; j < items.get(i).innerItem.size(); j++){

          list2.add(items.get(i).innerItem.get(j).string);
     }

     mainList.add(list2);

     list2.clear();
}
private ArrayList mainList=new ArrayList();
private ArrayList list2=新的ArrayList();
对于(int i=0;i
假设有两个项目,innerItem1带有字符串“哈哈”和“呵呵”,innerItem2带有字符串“咯咯”和“什么”

主列表中有两个列表,都是“咯咯笑”和“什么”


mainList最后有多个相同数组的列表:追加的最后一个列表。Clear函数似乎可以清除list2和追加的mainList部分。如何使列表保持不同?提前感谢!

您当前多次将单个
ArrayList list2
添加到
mainList
因为它始终保持相同的对象,并且每次到达循环结束时清除
list2
后它保持为空

如果我正确理解您的问题,则应使用以下代码解决您的问题:

private ArrayList mainList=new ArrayList();
对于(int i=0;i

现在,将为
项列表的每个条目创建一个新的ArrayList,并将其添加到
mainList
您当前将一个
ArrayList列表2
多次添加到
mainList
中,因为它始终保持相同的对象,并且每次到达列表末尾时清除
list2
后,它将保持为空循环

如果我正确理解您的问题,则应使用以下代码解决您的问题:

private ArrayList mainList=new ArrayList();
对于(int i=0;i

现在,将为
项的每个条目创建一个新的ArrayList,并将其添加到
mainList
list2
是一个对象,与所有对象一样,它的作用类似于一个引用类型。这意味着如果将
list2
附加到
mainList
,然后清除
list2
,也将清除列表y您刚刚添加到
mainList
。然后更改
list2
以保存其他值时,它也会更改
mainList中附加列表的内容。

最后,您添加了很多次
list2
,每个都只是引用与原始
list2
对象相同的内存地址。因此,它们都是相同的

要解决此问题,您可以创建
list2
的克隆并附加该克隆,而不是
list2
本身,或者通过构造将
list2
覆盖为每个迭代的新列表

备选案文1:

mainList.add(new ArrayList<>(list2));
list2.clear();
mainList.add(新的ArrayList(list2));
清单2.clear();
备选案文2:

mainList.add(list2);
list2 = new ArrayList<>();
mainList.add(列表2);
list2=新的ArrayList();

list2
是一个对象,与所有对象一样,其行为类似于引用类型。这意味着,如果将
list2
附加到
mainList
,然后清除
list2
,这也将清除刚刚附加到
mainList
的列表。然后更改
list2
以保存其他值时,它将同时在
mainList中更改附加列表的内容。

最后,您添加了很多次
list2
,每个都只是引用与原始
list2
对象相同的内存地址。因此,它们都是相同的

要解决此问题,您可以创建
list2
的克隆并附加该克隆,而不是
list2
本身,或者通过构造将
list2
覆盖为每个迭代的新列表

备选案文1:

mainList.add(new ArrayList<>(list2));
list2.clear();
mainList.add(新的ArrayList(list2));
清单2.clear();
备选案文2:

mainList.add(list2);
list2 = new ArrayList<>();
mainList.add(列表2);
list2=新的ArrayList();

添加示例输入和预期输出。添加示例输入和预期输出。