catch-img

Javaでの繰り返し処理に必要な拡張for文を基本から解説

Javaでfor文はよく使われます。今回はfor文をさらに便利に使うことができる「拡張for文」について、基本から見ていきましょう。for文と使い分けることで、コードをより書きやすくなります。配列やlistの処理の仕方も併せて解説します。

問題解決力を身に付ける若手、新人SE・PG向けの通年Java研修(1~3ヶ月コース)はこちら

目次[非表示]

  1. 1.Javaにおける拡張for文とfor文の基本
    1. 1.1.拡張for文の基本的な使い方
      1. 1.1.1.拡張for文はJ2SE 5.0から登場
  2. 2.Javaの拡張for文では配列やlistの考え方も身に着けよう
    1. 2.1.配列やlistの基本と違い
    2. 2.2.拡張for文を使って配列やlistをコンパクトに処理
  3. 3.Javaの拡張for文とiterator、map、二次元配列も把握しよう
    1. 3.1.「iterator(イテレータ)」と拡張for文
    2. 3.2.便利なクラス「map」の要素を拡張for文で処理する
    3. 3.3.二次元配列の基本と拡張for文での処理
  4. 4.拡張for文は繰り返しをコンパクトに処理

Javaにおける拡張for文とfor文の基本

繰り返し処理を決められた回数実行するfor文をより簡潔に記述する「拡張for文」を使えると、コードをすっきり書くことができるようになります。拡張for文の基本的な定義や使い方から、まずは学びましょう。

若手、新人エンジニアの成長を阻む 人材育成5つの失敗と解決策はこちら

拡張for文の基本的な使い方

通常のfor文は、下記のように記述します。

for(初期化式; 条件式; 変化式){
 実行する処理
}

一方、拡張for文は下記のような記述です。

for (型 変数名: 配列名もしくはコレクション名){
 実行する処理
}

配列やコレクションの要素に対して、順番に処理するために使われます。コードのサンプルを見ていきましょう。

public class Main {
  public static void main(String[] args) {
    String[] member = {"田中", "佐藤", "野田"};
    for (String name : member) {
      System.out.println("こんにちは" + name + "さん。");
    }
  }
}

配列にある3つの要素を取り出しながら、ブロック内の処理を行います。結果は以下のように出力されます。

こんにちは田中さん。
こんにちは佐藤さん。
こんにちは野田さん。

全ての要素を1回ずつ取り出したい場合に便利な文です。

拡張for文はJ2SE 5.0から登場

拡張for文は、J2SE 5.0(java 2 SEのバージョン 5.0)から登場しています。J2SE 5.0は2004年にリリースされていて、現在のコードやエディタで対応していない心配はありません。

  Javaを使ったプログラム作成に最適なエディタおすすめ6選 | Java・フロントエンド研修のジョブサポート コーディングを行う上で、エディタの選択は重要です。自分のスタイルや環境に合った適切なエディタを用いることで、作業効率は格段にアップするでしょう。この記事では、Javaを使うのに最適なエディタを6選紹介します。 Java・フロントエンド研修のジョブサポート


Javaの拡張for文では配列やlistの考え方も身に着けよう

拡張for文を用いた配列やlistの処理の仕方についても学んでいきましょう。配列とリストの違いと、具体的な処理方法について解説します。

全国の若手~ベテランエンジニアが受講している個別指導のオンライン・リモート講座(入門5日・基礎10日)はこちら

配列やlistの基本と違い

配列とlistは、見た目や役割がとてもよく似ています。大きく異なるのは、データの持ち方です。

listにおける各要素は、次に追加された要素にリンクします。一方、配列はメモリ上のまとまった領域を分割し、それぞれにインデックスを振ります。これにより、要素は並び替えや入れ替えが難しいものの、初期から要素数が確定している場合に使いやすいという特性を持っているのです。

拡張for文を使って配列やlistをコンパクトに処理

拡張for文を用いることで、配列やlistをコンパクトに処理することが可能です。通常のfor文を用いた、次のようなfor文があるとしましょう。

public class Main {
  public static void main (String[] args){
    int score[] = {10, 20, 30, 40, 50};
    for (int index = 0; index < score.length; index ++)
    System.out.println("スコアは " + score[index] +"点です。");
  }
}

拡張for文を使うと以下のように置き換えられます。

public class Main {
  public static void main (String[] args){
    int numbers[] = {10, 20, 30, 40, 50};
    for (int score : numbers){
      System.out.println(" スコアは = " + score + "点です。");
    }
  }
}

このように、非常にコンパクトに記載できるようになるので便利です。通常のfor文と使い分けられるようになっておきましょう。

■関連記事

  Javaの勉強方法は目的で選ぶ。WEBサービス・書籍・研修の特徴 | Java・フロントエンド研修のジョブサポート Javaエンジニアの育成が必要となっても、社内で教育に関するリソースがない場合、システム開発や人事の担当者は方法を巡って頭を悩ませることも多いでしょう。WEBサービス・書籍・研修など、自社で提案できる新人向けの最適な勉強方法を紹介します。 Java・フロントエンド研修のジョブサポート


Javaの拡張for文とiterator、map、二次元配列も把握しよう

Javaのiterator(イテレータ)やmap、二次元配列について、拡張for文による処理の仕方をそれぞれ解説します。

学歴、学部による「IT知識」「基礎知識」の格差を無くす個別指導の新人研修プロエンジニア育成コース(Java2・3ヶ月コース)はこちら

「iterator(イテレータ)」と拡張for文

iteratorは、Iterableインタフェースを実装したクラスのオブジェクトに対し、そのオブジェクトが持つ要素集合に順番にアクセスを行うためのインターフェイスです。

拡張for文の内部ではiteratorが使われているため、拡張for文を使ったループ処理はiteratorを使用したものと同様です。

ArrayListやHashSetなど、Iterableインターフェースを実装するクラスのiteratorメソッドを呼び出すと、イテレータを得ることができます。

ArrayList list = new ArrayList();
Iterator iterator = list.iterator();

Iteratorインターフェースを実装クラスでは、次の2つのメソッドを実装する必要があります。

  • hasNextメソッド:次の要素があればループする
  • nextメソッド:次の要素に移動
class MyClass implements Iterator{
 public boolean hasNext() {
 // オブジェクトの対する処理
 }
 public Object next() {
  // オブジェクトに対する処理
 }
}

便利なクラス「map」の要素を拡張for文で処理する

Javaにおけるmapクラスとは、「キー」となる何かのクラスのインスタンスと、それに値を対応付けて保存するためのものです。特定のキーの有無を調べたり、キーに対する値に素早くアクセスするために用いられます。

Map<キーの型名, 値の型名> 変数名 = new HashMap<>();

拡張for文を用いるには、以下のような書き方をします。

Map<A, B> map = new Map<K, V>();
//Kはkey、VはValue

for(Map.Entry<K, V> entry : map.entrySet()) {
 System.out.println(entry.getKey()); 
 // keyを取り出す
 System.out.println(entry.getValue()); 
 // valueを取り出す
}

二次元配列の基本と拡張for文での処理

二次元配列とは、通常の一次元配列にもう一次元が加わることです。マンションで例えてみましょう。通常の一次元配列の場合、階のみの配列になりますが、二次元配列では、階と部屋番号を同時に扱うことができるようになります。

二次元配列は、まず変数の型の後の[]を二つ書けば宣言したことになります。

型 配列変数名[][];

拡張for文での記述は、一次元配列と大きな違いはありません。配列ごとに対応する拡張for文を記述する形になります。

public class Main {
  public static void main(String[] args) {
    int[][] array = {{1,10}, {2,20}, {3,30,33}};
    for(int[] tes: array){
      for(int val : tes){
        System.out.println(val);
      }
    }
  }
}
  オンライン・リモート講座(5日・10日)-Java・フロントエンド研修のジョブサポート オンライン・リモート講座(5日・10日)は、全国の中小企業~大手上場企業の未経験者、現役エンジニアまで幅広く受講。自学形式でJava、フロントエンド(HTML5 ・CSS・JavaScript)の講座を提供。Java・フロントエンド研修はジョブサポートにお任せください。 Java・フロントエンド研修のジョブサポート


拡張for文は繰り返しをコンパクトに処理

拡張for文は、繰り返し処理であるfor文を、コンパクトに記述することが可能です。J2SE 5.0から登場し、今も使うことができます。

全国の若手~ベテランエンジニアが受講している個別指導のオンライン・リモート講座(入門5日・基礎10日)資料ダウンロードはこちら

通常のfor文でも問題ありませんが、コードをすっきりさせることができるので、見やすいコードを作成するためにも使い方を覚えておきましょう。

​​​​​​​

新卒・中途未経験者を採用した
企業におすすめのエンジニア研修サービス

法人研修の実績2500名以上!中小企業~大手上場企業まで幅広く受講してます。
若手、新人エンジニア採用後の Java研修はジョブサポートお任せ下さい
おすすめお役立ち資料02
短期講座(入門5日、基礎10日) Java・フロントエンド (HTML5・CSS・JavaScript) 全国の中小~大手企業まで幅広くお問い合わせ、 受講を頂く人気講座です

運営会社

株式会社ジョブサポート

Java・フロントエンド(HTML5・CSS・JavaScript)の企業研修実績2500名以上を実施。受講満足度は95%。

おすすめお役立ち資料

おすすめお役立ち資料02
おすすめお役立ち資料02

関連記事

研修サービス一覧

プロエンジニア育成コース
新人エンジニア研修
短期通学講座
研修実績
よくあるご質問

ランキング

タグ一覧