スポンサーサイト





上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

タグ :

   印刷ボタン       この記事に拍手する       このエントリーをはてなブックマークに追加

Return to page top

  • Comments (Close): -
  • TrackBack (Close): -

Iterator





ArrayListの要素をfor文などで取得する場合、size()メソッドを使って要素の個数を取得します。

しかし、要素を追加・変更可能なArrayListで要素の個数を取得するのは筋がいいとはいえないかもしれません。

実は、Iteratorというインタフェースを使うと要素の個数を取得せずに繰り返し処理可能です。

リストの数が増えてくると、Iteratorを使うほうが処理スピードは速くなると思われます。

package kihon;

import java.util.ArrayList;
import java.util.Iterator;

class Sample
{
public static void main(String args[])
{
ArrayList<String> fruits=new ArrayList<String>();

fruits.add("りんご");
fruits.add("みかん");
fruits.add("キウイ");

Iterator<String> i=fruits.iterator();
while(i.hasNext()){
String f=(String)i.next();
System.out.println(f);
}
}
}


Iteratorを利用するには、java.util.Iteratorをインポートします。

Iterator変数iに反復子を代入するため、Collectionインタフェースのiteratorメソッドを使用します(CollectionインタフェースはListインタフェースのスーパーインタフェースなので、Listインタフェースでも使用することができます)。

Iterator i=fruits.iterator();



次に、while文を使うためにhasNext()メソッドを呼び出します。hasNext()メソッドは、リストに要素がなくなるまでtrueを返してくれます。

next()メソッドは、直後の要素を返します。戻り値はObjectクラスなので、実行時には適切なクラスへのキャストが必要です。

上の例ではwhile文を使いましたが、for文を使うやり方もあります。

package kihon;

import java.util.ArrayList;
import java.util.Iterator;

class Sample
{
public static void main(String args[])
{
ArrayList<String> fruits=new ArrayList<String>();

fruits.add("りんご");
fruits.add("みかん");
fruits.add("キウイ");

for(Iterator<String> i=fruits.iterator(); i.hasNext();){
String f=(String)i.next();
System.out.println(f);
}
}
}


Iteratorとジェネリクス


ArrayListでは、ジェネリクスを使えばget()メソッドで要素の数を取得する際のキャストが不要になりましたが、Iteratorのnext()メソッドではどうでしょうか?

package kihon;

import java.util.ArrayList;
import java.util.Iterator;

class Sample
{
public static void main(String args[])
{
ArrayList fruits=new ArrayList();

fruits.add("りんご");
fruits.add("みかん");
fruits.add("キウイ");

Iterator i=fruits.iterator();
while(i.hasNext()){
String f=i.next();
System.out.println(f);
}

}
}


Iteratorのnext()メソッドを使うときも、ジェネリクスを使うことでキャストしなくてもよくなります。


Iteratorとfor文


先ほどまでは、繰り返し処理をwhile文を使って行いましたが、今度はfor文を使ってみましょう。

package kihon;

import java.util.ArrayList;
import java.util.Iterator;

class Sample
{
public static void main(String args[])
{
ArrayList fruits=new ArrayList();

fruits.add("りんご");
fruits.add("みかん");
fruits.add("キウイ");

for(Iterator i=fruits.iterator(); i.hasNext();){
System.out.println(i.next());
}
}
}


ふつうfor文では、変数の宣言、繰り返し回数、何個ずつ繰り返すかを定義しなければなりませんが、hasNext()メソッドでは次の要素がある間処理するので、定義を一つ減らすことができます。

ちなみに、拡張for文においては、Iteratorを使う必要がありません(参照)。

関連記事

タグ :

   印刷ボタン       この記事に拍手する       このエントリーをはてなブックマークに追加

Return to page top

Comments:

Comment Form
Only inform the site author.

Trackback+Pingback:

TrackBack URL for this entry
http://javamania.blog25.fc2.com/tb.php/97-979d9a40
  • 閉じるボタン
クラスライブラリ解説 目次
クラスライブラリとは
 ├ Java APIの調べ方
 ├ Objectクラスを調べる
 ├ ライブラリのインポート
 ├ 完全修飾クラス名を調べる
 ├ staticインポート
 ├ 外部ライブラリの利用

文字列を扱う
 ├ Stringとイミュータプル
 ├ StringBuilder 文字列の連結
 ├ toString()のオーバーライド
 ├ toXxCase() 大文字と小文字
 ├ compareTo() 値の比較
 ├ parseDouble() 文字を小数値に
 └ 文字列を抜き出す
 ├ char配列からString型へ変換
 ├ 空白文字の除去

日付を扱う
 ├ Calendar 現在の日付
 ├ Date 日付の表示

数値演算を扱う
 ├ round() 切上・切捨・四捨五入
 ├ BigDecimal
 ├ sqrt(),pow() 累乗と平方根
 ├ BigInteger
 ├ int型の最大値・最小値
 ├ random() 乱数作成

ファイルを扱う
 ├ ファイルの存在確認
 ├ ファイルを作成
 ├ ファイルの削除
 ├ ファイルサイズを調べる

入出力ストリーム
 ├ ファイルを読み込む
 ├ 画像ファイルのコピー
 ├ 日本語の読み込みと書き出し
 ├ バッファ入出力
 ├ データ型フリーの出力ストリーム
 ├ getBytes()メソッド

書式つき入出力
 ├ 書式を指定して出力
 ├ 引数インデックス
 ├ 整数値のフォーマット
 ├ 小数値のフォーマット
 ├ 九九の表のフォーマット

例外処理
 ├ printStackTrace()
 ├ NullPointerException
 └ NumberFormatException
月別アーカイブ
カテゴリ
リンク
QRコード
QR
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。