2

こんにちは私はとして名前が付けられたArraylistの私のArraylistを埋めたいと思いますそしてそのために私はに追加した後に明確になるQuestionIdList_Section
という名前の一時的なArraylistを作りました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 []

誰かが私がここで欠けているところを理解するのを手伝ってください。一時配列リストをクリアして、異なる値を設定できるようにしたいので、iUESTION_ID_Of_SectionId_Tempの2番目のインデックスに対して値を異なる値にQuestionIdList_Section設定します。

前もって感謝します。

4

3 に答える 3

3

QUESTION_ID_Of_SectionId_Tempは単なる参考です。

なのでクリアすれば中の値QuestionIdList_Sectionもクリアになります。

あなたがすべきことは

QUESTION_ID_Of_SectionId_Temp = new ArrayList<String>();

それ以外の

QUESTION_ID_Of_SectionId_Temp.clear();

于 2013-02-02T08:23:22.630 に答える
2

ArrayListassociated withは、associated withの参照QuestionIdList_Section保持します。 したがって、一時 ArrayList をクリアすると、 にある 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の 2 番目のインデックスに表示されますQuestionIdList_Section

于 2013-02-02T08:24:39.137 に答える
1

QUESTION_ID_Of_SectionId_Temp要素がないことを意味する配列をクリアしています。2 番目の「後」の印刷では、空が表示されます。

最初の「After」は、現在空である上記QuestionIdList_Sectionをまだ含んでいるの内容を表示します。ArrayList

于 2013-02-02T08:24:17.640 に答える