こんにちは、バナナドリームです。
前編では「Listの基本」と「nullの扱い方」について解説しました。後編では、Listを実践的に使いこなすために欠かせない「ループ処理」と「値の加工・変換」を取り上げます。
for文を使って要素を一つずつ処理する
JavaのListはインデックス(要素番号)を持っており、for文を使って一つずつ処理できます。
java
List<String> items = Arrays.asList("リンゴ", "バナナ", "オレンジ");
for (int i = 0; i < items.size(); i++) {
System.out.println("項目[" + i + "]:" + items.get(i));
}
インデックスを明確に把握できるため、「偶数番目だけ処理する」「特定の位置をスキップする」といった柔軟な操作が可能です。
拡張for文(foreach)でシンプルに処理する
インデックスが不要で「全部をそのまま処理したい」場合は、拡張for文が便利です。
java
List<String> items = Arrays.asList("リンゴ", "バナナ", "オレンジ");
for (String item : items) {
System.out.println("フルーツ:" + item);
}
読みやすく、コードがスッキリするため、開発現場でも「単純な一覧処理」の際によく使われます。
for文とforeachの使い分け
場面:インデックスを使いたい/条件付きでスキップしたい
向いている文:for文
場面:全要素を順番にそのまま処理したい
向いている文:foreach文
例えば「3番目だけをスキップしたい」場合はfor文、すべてを順に表示するだけならforeachが最適です。
注意点:
・Listにnullが含まれていると処理時に例外が起きる可能性がある(前編参照)
・要素を削除しながらループしたい場合はforeach文では対応できない
元のListを書き換える:set()を使う
ループ処理の応用として、Listの中身を加工・変換する場面は実務でも頻繁に登場します。元のListを直接書き換えたい場合は set() メソッドを使います。
java
List<Integer> numbers = new ArrayList<>(Arrays.asList(1, 2, 3, 4, 5));
for (int i = 0; i < numbers.size(); i++) {
int doubled = numbers.get(i) * 2;
numbers.set(i, doubled);
}
System.out.println(numbers); // → [2, 4, 6, 8, 10]
get(i) で値を取り出し、加工した値を set(i, 加工後の値) で上書きします。メモリの無駄を抑えられるのがメリットです。
新しいListに加工して格納する:add()で蓄積
元のListを残したまま加工後のデータを使いたい場合は、別のListに追加していく方法が便利です。
java
List<String> names = Arrays.asList("taro", "hanako", "jiro");
List<String> capitalized = new ArrayList<>();
for (String name : names) {
String updated = name.substring(0, 1).toUpperCase() + name.substring(1);
capitalized.add(updated);
}
System.out.println(capitalized); // → [Taro, Hanako, Jiro]
よくある用途としては、文字列の整形(大文字・小文字の変換)、数値の演算(ポイント加算、割引計算)、nullや空文字の除外などがあります。
ラムダ式を使えばもっとスマートに
Javaにはラムダ式やStream APIを使った書き方もあります。例えば上の例はStreamを使うとこのように書けます。
java
import java.util.stream.Collectors;
List<String> result = names.stream()
.map(s -> s.substring(0, 1).toUpperCase() + s.substring(1))
.collect(Collectors.toList());
ただし初心者のうちは無理して使わなくてもOKです。処理の流れをしっかり理解してから使えば、ラムダやStreamは「コードの見た目」をスッキリさせる強い味方になります。
まとめ
・for文はインデックスを使った柔軟な制御に向いている
・foreach文はシンプルで読みやすい処理に向いている
・nullの存在や処理内容によって適切な文を選ぶことが大切
・set() で元のListを書き換え、add() で新しいListに蓄積する2パターンを使い分けよう
・慣れてきたらラムダ式・Stream APIへのステップアップも視野に
次回:「Listを絞り込むには?条件に合う要素だけ取り出すフィルタリング入門」
Listの中から「条件に合う要素だけ取り出したい」という場面は実務でも頻繁に登場します。
次回は、nullや空文字の除外、特定の条件での絞り込みなど、フィルタリングの基本を解説します。

