商品名を ArrayList に格納せよ
問題のポイント
配列から ArrayList へ変換し、繰り返し処理で表示する。
ここで初めて登場するのがArrayList<String>
。
配列とは異なり、要素の追加や削除が自由にできるリスト構造だ。「配列からリストへ」というのは、データ構造をどう扱うかという視点を学ぶチャンス。
単なる変換ではなく、「なぜリストを使うのか」を意識しろ。まず、日本語で考えろ
- 文字列の配列(商品名)が渡される
- それを
ArrayList<String>
に変換する- リストの中身を1行ずつ出力する
コメントを書け
// 空のリストを作る // 配列をループで回す // 各要素をリストに追加する // リストをループで回して出力する
コメントに従ってコードを書け
import java.util.ArrayList;
public static void convertAndPrintList(String[] names) {
// 空のリストを作る
ArrayList<String> list = new ArrayList<>();
// 配列をループで回す
for (int i = 0; i < names.length; i++) {
// 各要素をリストに追加する
list.add(names[i]);
}
// リストをループで回して出力する
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
}
コードの解説
ArrayList<String> list = new ArrayList<>();
空のリストを作成。あとから追加・削除ができる柔軟な構造。
list.add(names[i]);
配列の i 番目の要素をリストに追加する。順番はそのまま。
list.get(i)
リストから要素を取得する方法。配列の[]
と違い、.get()
メソッドを使う。
list.size()
リストの長さを取得するメソッド。配列の.length
とは使い方が異なる。
つまづきやすいポイント
配列とリストの違いにちゃんと気づけてるか?
- 配列: サイズが固定。
stocks.length
で長さ、stocks[i]
でアクセス- リスト: サイズが可変。
.size()
で長さ、.get(i)
でアクセス配列のつもりで
list[i]
と書いてコンパイルエラー──初学者あるある。
まったく同じように見えて、中身の構造も書き方も違う。あと、忘れがちなのがインポート。
ArrayList
を使うならimport java.util.ArrayList;
をファイルの先頭に忘れずに。
teshのひとこと
配列とリストの違いって、何だと思う?
それはな、「要素の数をあとから変えられるかどうか」だ。
配列は「ここに5個」って最初に決めたら、それ以上は変えられねぇ。
でもリストは、「あとで増えるかもしれない」って前提でつくられてる。だから、「決まったものをどう処理するか」じゃなくて、 「変化をどう受け入れるか」を考えられるかどうかで、おまえの設計が変わる。
Just keep typing, baby.
構造が変わるとき、おまえの思考も変わっていく
他のステップや学習順序を確認したい場合は、
[配列修羅道:全体のステップ構成] をチェックしてくれ。