ArrayList使用禁忌——ArrayList間の付与(小記)
積もらずに千里も歩かない
ArrayListの使用については、初期化された後、外部の口実で別のArrayListを取得し、本クラスのArrayListオブジェクトに対して騒ぎを起こすことが多い.伝達されたオブジェクトは変わっていないと思っていたが、自分の小さな聡明な喜びに満ちている(既存のArrayListを破壊せず、別のArrayListで操作するのがいい).
オブジェクトArrayListにポインタの概念を深く研究したり理解したりしていれば、このような低級な間違いを犯すことはないかもしれませんが、実際には本クラスのオブジェクトに値を与えると同時に、本クラスのArrayListオブジェクトポインタも伝達されたArrayListを指しています.そのため、あなたはこのように操作して、修正したのは伝達されたArrayListです.したがって、正しい操作方法(送信されたArrayListに影響を与えたくないが、このArrayListデータソースを操作する新しいArrayListがある)は、次のようになります.
(1)forループ、データの追加
その中のbuttomContainerDataは本クラスのArrayListオブジェクトである、Data.BRIEF_SHOWは外部のArrayListオブジェクトです.このクラスのArrayListオブジェクトにデータソースのデータをforループで手動で追加すればよい.
(2)ArrayListでのcloneメソッド
また、apiを直接呼び出すこともできます.もともとはここで値を考慮して、インタフェースを残していました.
ArrayListの使用については、初期化された後、外部の口実で別のArrayListを取得し、本クラスのArrayListオブジェクトに対して騒ぎを起こすことが多い.伝達されたオブジェクトは変わっていないと思っていたが、自分の小さな聡明な喜びに満ちている(既存のArrayListを破壊せず、別のArrayListで操作するのがいい).
オブジェクトArrayListにポインタの概念を深く研究したり理解したりしていれば、このような低級な間違いを犯すことはないかもしれませんが、実際には本クラスのオブジェクトに値を与えると同時に、本クラスのArrayListオブジェクトポインタも伝達されたArrayListを指しています.そのため、あなたはこのように操作して、修正したのは伝達されたArrayListです.したがって、正しい操作方法(送信されたArrayListに影響を与えたくないが、このArrayListデータソースを操作する新しいArrayListがある)は、次のようになります.
(1)forループ、データの追加
private ArrayList buttomContainerData = new ArrayList<>();
private void initData() {
buttomContainerData.clear();
for (int i = Data.BRIEF_SHOW.size(); i > 0; i--) {
buttomContainerData.add(0, Data.BRIEF_SHOW.get(i - 1));
}
}
その中のbuttomContainerDataは本クラスのArrayListオブジェクトである、Data.BRIEF_SHOWは外部のArrayListオブジェクトです.このクラスのArrayListオブジェクトにデータソースのデータをforループで手動で追加すればよい.
(2)ArrayListでのcloneメソッド
private void initData() {
buttomContainerData.clear();
ArrayList temporaryArrayList = (ArrayList) Data.BRIEF_SHOW;
buttomContainerData = (ArrayList) temporaryArrayList.clone();
}
また、apiを直接呼び出すこともできます.もともとはここで値を考慮して、インタフェースを残していました.