Javaプログラミング/Javaプログラミング関連情報

Java5の新文法をマスターしよう(3ページ目)

既にJava6の時代となりつつある今。Java5からサポートされた新文法についてしっかり理解しておきましょう。

執筆者:掌田 津耶乃

拡張されたfor構文の利用


この総称型に関連して、「コレクションを繰り返しで利用するための構文」が新たに用意されることになりました。それは、forです。といっても、従来からあるforとは少しだけ違います。

class MyData {
  public ArrayList list = new ArrayList();
  
  public void printAll() {
    for(int i = 0;i < list.size();i++){
      System.out.print(list.get(i) + " ");
    }
  }
}


先ほどのMyDataクラスにまた登場してもらいましょう。少し処理を変更して、forを使った形にしてみました。このように、コレクションをforで利用することというのもあります。

こうしたforを利用した処理では、例えば「要素数以上の繰り返しをしようとして失敗した」なんて例外を起こしてしまうことなどもよくありますね。コレクションだけでなく、配列などでもよくあるケアレスミスでしょう。

こうした「複数の要素を持つものから、存在する要素だけをきっちり取り出して処理する」というようなとき、どうするのが確実でしょうか。先の例ではIteratorを取り出して処理していましたが、ただ「全部きれいに取り出すため」だけにIteratorをわざわざ持ち出すのは面倒ですし、配列など利用できないものもあります。もっと一般的な対処法はないでしょうか。

こうした要望にこたえて登場したのが、拡張for構文です。これは、以下のような形をしています。

for (変数 : コレクション )


このforは、コレクションや配列の中から順番に要素を取り出し、指定の変数に代入します。これを利用することで、中にある要素すべてに対してきちんと1回ずつ処理を行なうことができます。

class MyData {
  public ArrayList list = new ArrayList();
  
  public void printAll() {
    for(String str:list){
      System.out.print(str + " ");
    }
  }
}


これが修正したソースコードです。ずいぶんとすっきりしましたね。listの中身が順次strに収められていくので、繰り返しでは単にstrを操作するだけで済んでしまいます。いちいちgetしたりIteratorからnextする必要もなし。「コードがすっきりと見やすくなる」というのも、拡張forの利点の一つといってよいでしょう。


  • 前のページへ
  • 1
  • 2
  • 3
  • 4
  • 5
  • 次のページへ

あわせて読みたい

あなたにオススメ

    表示について

    カテゴリー一覧

    All Aboutサービス・メディア

    All About公式SNS
    日々の生活や仕事を楽しむための情報を毎日お届けします。
    公式SNS一覧
    © All About, Inc. All rights reserved. 掲載の記事・写真・イラストなど、すべてのコンテンツの無断複写・転載・公衆送信等を禁じます