2

您好,我想填写我的 Arraylist 的 Arraylist,QuestionIdList_Section
命名QUESTION_ID_Of_SectionId_TempQuestionIdList_Section

我的代码如下,以便您了解我的编码方式:

public static ArrayList<String> QUESTION_ID_Of_SectionId_Temp = new ArrayList<String>();
public static ArrayList<ArrayList<String>> QuestionIdList_Section = new ArrayList<ArrayList<String>>();

QUESTION_ID_Of_SectionId_Temp.add("Hello");
QUESTION_ID_Of_SectionId_Temp.add("Hiii");

QuestionIdList_Section.add(0,QUESTION_ID_Of_SectionId_Temp);

Log.i(TAG, "******Before " + QuestionIdList_Section);
Log.i(TAG, "******Before "+ QUESTION_ID_Of_SectionId_Temp);

QUESTION_ID_Of_SectionId_Temp.clear();

Log.i(TAG, "******After  " + QuestionIdList_Section);
Log.i(TAG, "******After " + QUESTION_ID_Of_SectionId_Temp);

执行代码后,我得到两个变量的不同结果。

如下 :

******Before [[Hello, Hiiii]]
******Before [Hello, Hiiii]
******After [[]]
******After []

有人可以帮助我了解我在这里缺少的地方。我想清除临时数组列表,以便我可以放置不同的值,UESTION_ID_Of_SectionId_Temp因此我的第二个索引QuestionIdList_Section将设置不同的值。

提前致谢。

4

3 回答 3

3

QUESTION_ID_Of_SectionId_Temp只是一个参考。

因此,如果您清除它,那么 in 的值QuestionIdList_Section也将被清除。

你应该做的是

QUESTION_ID_Of_SectionId_Temp = new ArrayList<String>();

代替

QUESTION_ID_Of_SectionId_Temp.clear();

于 2013-02-02T08:23:22.630 回答
2

ArrayList关联的 with持有QuestionIdList_Section关联的with的引用。 因此,在清除临时 ArrayList 时,也会反映在.ArrayListQUESTION_ID_Of_SectionId_Temp
QuestionIdList_Section

您可能想要创建一个临时数组的新实例并将其添加到主数组列表中,如下所示:

QUESTION_ID_Of_SectionId_Temp = new ArrayList<String>();
QuestionIdList_Section.add(QUESTION_ID_Of_SectionId_Temp);

这样做之后,您添加的每个元素都QUESTION_ID_Of_SectionId_Temp将显示在QuestionIdList_Section.

于 2013-02-02T08:24:39.137 回答
1

您正在清除QUESTION_ID_Of_SectionId_Temp数组,这意味着它没有元素。第二个“After”打印显示为空。

第一个“之后”显示的内容QuestionIdList_Section仍然包含ArrayList上面的内容,现在是空的。

于 2013-02-02T08:24:17.640 回答