初期化を繰り返した
自分が書いたプログラムに、以下のようなコードがありました。
for (int i = 0; i < max_row; i++) { for (int j = 0; j < max_column; j++) { row.add("{r:" + i + " c:" + j + "}"); } table.add((ArrayList<String>) row.clone()); row.clear(); }
1. rowを変更 2. rowをcloneして代入 3. 初期化
ってループです。
これやるくらいなら・・・ってお話
変更後のコード
for (int i = 0; i < max_row; i++) { ArrayList<String> row = new ArrayList<String>(); for (int j = 0; j < max_column; j++) { row.add("{r:" + i + " c:" + j + "}"); } table.add(row); }
1. rowを生成 2. 代入
このループに変わりました。
覚えておくと良さそうなこと
そもそもcloneを使わなきゃいけないことに疑問を持とうってお話
今回のケースは、『初期化して値を入れる』という発想は、『今までのことをなかったことにする』という発想に置き換えられます。
『なかったことにする』なら、『捨てて新しく用意する』と考えれば、同じ状況に陥っても、この書き方が思いつくと思いますφ(・・
JJUGの皆さんいろいろアドバイスありがとうございます・・・!