【Java-A090-010】繰り返し、配列、拡張for文、List、Mapについて

Javaという広大な迷宮に足を踏み入れ、少しずつその地図を広げていく。
この「学ぶ」という行為そのものが、大人に許された最高の贅沢なのかもしれません。

今回は、プログラムの心臓部とも言える「繰り返し処理」と、それを支える「データの器」について。
一見無機質なコードの裏側に潜む、戦略的な思考の片鱗を整理しておこうと思います。


1. データの「器」を選ぶ戦略:配列とリスト

プログラミングにおいて、複数の値をどう保持するか。これは料理で言えば、どの皿に盛り付けるかを選ぶようなものです。

配列(Array)の不器用な愛嬌

最初に登場するのは「配列」です。
しかし、これがいささか扱いにくい。一度サイズを決めると、後から要素を追加するのが難しいという、頑固な職人のような側面があります。

String[] array = new String[3];

現代のJava開発においては、この「配列」を直接こねくり回す機会は少ない。……そう、あえて不便な道を通る必要はないのです。

リスト(List)という柔軟な選択肢

そこで真打ち登場なのが「リスト(ArrayList)」です。
リストは、要素の追加も削除も自由自在。

  • add() で末尾にサッと追加。
  • remove() で不要なものをスマートに削除。

(……ふふ、この自由度。やはりリストこそが、我々が手にすべき「勝てる武器」だ。)

マップ(Map)という情報の紐付け

さらに高度な器として「マップ」があります。
これは「キー」と「値」をセットで管理するもの。例えば、「1番」というキーに対して「テスト」という値を対応させる。
非常に強力ですが、複雑にネスト(入れ子)させすぎると、後で自分が迷子になる諸刃の剣でもあります。何事もシンプルが一番、ということですね。


2. 儀式としての繰り返し処理:for文の使い分け

リストに詰めたデータを、一つずつ取り出して処理する。ここで「繰り返し処理」の出番です。

基本のfor文(カウンター式)

「何回繰り返すか」を厳密に管理したい時は、このスタイル。

for (int i = 0; i < 4; i++) {
    // 処理
}

i というカウンターが1ずつ増えていく。今、自分が全体のどの位置にいるのかを把握しながら進む、堅実な歩みです。

拡張for文(洗練された巡回)

一方で、リストの中身をただ順番に全て扱いたいなら、「拡張for文」が美しい。

for (String color : colorList) {
    // 処理
}

カウンターを意識せず、中身の要素だけに集中できる。
(……これだ。余計なノイズを削ぎ落とした、この簡潔さ。これでいい。)


3. 実践:打ち上げ花火、四連発の美学

今回はMinecraftの世界で、リストに格納した「赤・青・白・黒」の4色の花火を順番に打ち上げる処理を実装しました。

プログラムの実行速度はあまりに速く、普通にループを回すと、4発の花火はほぼ同時に夜空へ消えてしまいます。
しかし、その一瞬の処理の中に、

  1. リストを宣言し、
  2. 条件(偶数の時だけ等)を吟味し、
  3. ループで色を塗り替える
    という緻密なロジックが詰まっている。

……っ!
この「一瞬」を制御するために、裏側で知略を尽くす。
これこそが、プログラミングの醍醐味と言えるでしょう。


考察:知識を「自分の血肉」に変えるということ

if文で道を選び、for文で歩みを進める。
この二つの組み合わせさえマスターすれば、プログラムの世界の大部分は攻略したも同然です。

あとは、世の中に用意されている便利なライブラリ(標準API)という「調味料」をどれだけ知っているか。
知識が増えれば増えるほど、書けるコードの「献立」は豊かになっていきます。

焦る必要はありません。
一つ一つの文法を、まるで吟味した食材を味わうように、ゆっくりと理解していく。
その積み重ねが、いつか自分だけの大きなシステムを作り上げる礎になるはずですから。


結び

リストを回し、条件を捌く。
一見すると地味な作業の連続ですが、その積み重ねの先にしか到達できない景色がある。

参考までに、私が4連花火を実行した時のMain.javaのソースコードを記載したpdfをアップしておこう。

Java-A090-010

さあ、明日はどんなロジックを組み立てようか。
静かな夜、コンパイルが通った時のあの小さな達成感を胸に、今日は筆を置くことにします。

お疲れ様でした。