1. 5 + 10 + 15 + 20 = 50 を返す
コース一覧
Java 中級:コレクション・Stream・例外処理
List を走査する

Java 中級:コレクション・Stream・例外処理

コレクション、ジェネリクス、例外処理、Stream API、関数型インターフェース、日付処理、ファイル I/O、継承など Java の中級トピックを実践的に学べるコースです。Java の基礎文法とオブジェクト指向を理解している学習者を対象に、現場の Java コードを読み書きするための知識を補強します。約 16 時間 (1 日 30 分 × 32 日) で 64 レッスンを修了でき、修了後は Spring Boot や業務システム開発に必要な Java 力が身につきます。

1
コレクション基礎
01. ArrayList を使う5分
02. List を走査する5分
03. 要素の削除と検索5分
04. HashMap の基本5分
05. Map を走査する5分
06. Set で重複を排除5分
07. Collections クラスの便利メソッド5分
08. コレクション基礎 まとめクイズ5分
2
ジェネリクス
01. ジェネリッククラスを作る5分
02. ジェネリックメソッド5分
03. 境界型パラメータ5分
04. ワイルドカード ?5分
05. Pair<K,V> を作る5分
06. ジェネリクス まとめクイズ5分
3
例外処理
01. try-catch で例外をつかむ5分
02. 複数の catch ブロック5分
03. throws と例外の伝播5分
04. 独自の例外を作る5分
05. try-with-resources5分
06. finally ブロック5分
07. 例外処理 まとめクイズ5分
4
Stream API
01. Stream を作る5分
02. filter で絞り込む5分
03. map で変換する5分
04. reduce で集約する5分
05. collect で集める5分
06. sorted で並び替え5分
07. distinct で重複排除5分
08. limit と skip5分
09. 並列ストリーム5分
10. Stream API まとめクイズ5分
5
関数型インターフェース
01. ラムダ式の基本5分
02. メソッド参照 ::5分
03. Function インターフェース5分
04. Predicate インターフェース5分
05. Consumer と Supplier5分
06. BiFunction と 2 引数の関数5分
07. 関数型インターフェース まとめクイズ5分
6
文字列操作
01. String.format で書式化5分
02. StringBuilder で連結5分
03. 正規表現の基本5分
04. split と join5分
05. 文字列操作 まとめクイズ5分
7
日付と時刻
01. LocalDate で日付を扱う5分
02. LocalDateTime で時刻も扱う5分
03. Duration で時間差を計算5分
04. 日付の書式化とパース5分
05. 日付の加減算5分
06. 日付と時刻 まとめクイズ5分
8
ファイル I/O
01. Files でファイルに書き込む5分
02. ファイルを行単位で読む5分
03. Path でファイルパスを扱う5分
04. BufferedReader と Stream API5分
05. ファイルの存在確認と削除5分
06. ファイル I/O まとめクイズ5分
9
継承とポリモーフィズム
01. extends で継承する5分
02. super で親を呼ぶ5分
03. メソッドのオーバーライド5分
04. abstract で抽象クラス5分
05. interface で契約を定義5分
06. default メソッド5分
07. instanceof と型パターン5分
08. ポリモーフィズムを活かす5分
09. 継承とポリモーフィズム まとめクイズ5分

List を走査する

i を増やしたいわけではない

リストの中身を頭から見ていくとき、まず思いつくのは配列と同じインデックスのループです。

Java

ArrayList<String> names = new ArrayList<>(); names.add("sato"); names.add("suzuki"); names.add("takahashi"); for (int i = 0; i < names.size(); i++) { System.out.println(names.get(i)); }

動きますが、i は本当に欲しかったものでしょうか。やりたいのは全部の名前を表示することで、i はそのための道具にすぎません。しかも size() は配列の length と違ってメソッドなので () が要り、条件を <= と書けば最後の 1 周で IndexOutOfBoundsException が飛びます。位置そのものを使わないなら、i は書かないほうが安全です。

拡張 for なら、インデックスは要らない

Java 5 から使える拡張 for なら、インデックスを一切書かずに全要素を回せます。

Java

int total = 0; for (String name : names) { total += name.length(); } System.out.println(total); // 19

for (String name : names) は「names の中身を 1 つずつ name という名前で取り出す」という意味です。get(i) の呼び出しも終了条件も消えました。リストが空なら 1 周も回らないので、空かどうかの確認を別に書く必要もありません。

取り出す変数の型は、リストの山かっこの中と同じにします。ArrayList<Integer> を回すなら for (int n : list) と書けて、Integer から int への変換は Java が自動でやってくれます。

diagram (will load when visible)

集計用の箱は、ループの外に置く

拡張 for でいちばん多い書き間違いは、集計用の変数をループの中で宣言してしまうことです。

Java

for (String name : names) { int total = 0; // 毎回 0 に戻ってしまう total += name.length(); }

これだと 1 周ごとに total が作り直され、しかもループを抜けた時点で変数自体が消えています。足し込む先はループの前に用意して、ループの中では足すだけにします。箱は外、足し算は中、と覚えておくと間違えません。

課題では、リストを自分で作ってから拡張 for で合計を求めます。途中で println を挟んで、値がちゃんと積み上がっているか確かめながら進めてください。

要件

  1. メソッド内で ArrayList<Integer> を新しく作り、5, 10, 15, 20 の 4 つの値をこの順番で add すること
  2. 全要素の合計は 拡張 for (for (int n : list)) を使って計算すること
  3. 戻り値の型は int、戻り値は 50 になること

入出力例

sumList() → 50

ヒント

`ArrayList` を使うには冒頭に `import java.util.ArrayList;` が必要です

要素数は `list.size()`、`i` 番目の取り出しは `list.get(i)`、いずれもカッコ `()` を忘れないように

拡張 for は `for (int n : list) { sum += n; }` の形。インデックスは書かなくて OK です

生田 陸人
監修生田 陸人
ゆめさくエンジニア / 現役ソフトウェアエンジニア監修者プロフィールを見る →
編集 ゆめさく編集部·公開 2026/05/19·更新 2026/08/26

関連レッスン

  • 要素の削除と検索

    ArrayList から要素を消したり、目的のものが入っているかを確かめる方法を学ぼう。

  • HashMap の基本

    Java の `HashMap` を使って、キーと値のペアを保存し、商品名から価格を引き出すメソッドを作ろう。

  • Map を走査する

    Map をキーと値のペアでループする方法を学ぼう。entrySet / keySet / values の使い分けと、順序を保証する LinkedHashMap の使い方まで身につける。

  • Set で重複を排除

    Java の Set を使って、コレクションから重複した要素を取り除く方法を学びます。HashSet と LinkedHashSet と TreeSet の違い、Set ならではの API を整理しよう。

このレッスンに出てくる用語

意味があいまいなまま進んだ語は、ここから読み直せます。

  • リスト順序付きで複数の値を扱うデータ構造
  • 配列サイズ固定の同型データの集まり
  • インデックスDB 検索を速くする索引
  • ループ繰り返し処理。矢印で戻すか専用記号で示す
  • メソッドクラスに属する関数
  • 終了条件再帰を止めるベースケース
  • 変数データに名前をつけて参照する仕組み
  • 戻り値呼び出し元への返答を表す点線矢印
main.java
学習モード
エディタを読み込んでいます

メモ

List を走査する

⌘S で保存