読者です 読者をやめる 読者になる 読者になる

よんちゅBlog

― このブログは自分用のメモや日々の問題などを共有するためのものです ―

20121005185841 お知らせ:  2013/07/17 ブログデザインをリニューアルしました。

JavaのList・Mapのfor文処理覚書

Java

久々にJavaを使うと忘れてたりするのでメモっとく。

対象のJavaはJava6です。

Javaはバージョンによってコーティングの常識が違うので注意が必要、
特にfor文は色々な書き方が出来るので非常に紛らわしい。

Listのfor文

// 例:ArrayList
List<SomeClass> list = new ArrayList<SomeClass>();

// 拡張for文:推奨
for (SomeClass item : list) {
    // itemを処理
}

// イテレータ:拡張for文が使えない場合に使用(要素の追加や削除が必要な場合など)
for (Iterator<SomeClass> it = list.iterator(); it.hasNext(); ) {
    SomeClass item = it.next();
    // itemを処理
}

// インデックス:非推奨
for (int i = 0, size = list.size(); i < size; i++) {
    SomeClass item = list.get(i);
    // itemを処理
}

Mapのfor文

拡張for文を使用した場合

// 例:HashMap
Map<KeyClass, ValueClass> map = new HashMap<KeyClass, ValueClass>();

/*--- 拡張for文 ---*/

// 拡張for文:キーをループ
for (KeyClass key : map.keySet()) {
    // keyを処理
}

// 拡張for文:値をループ
for (ValueClass val : map.values()) {
    // valを処理
}

// 拡張for文:キーと値をループ
for (Map.Entry<KeyClass, ValueClass> entry : map.entrySet()) {
    // キーを取得
    KeyClass key = entry.getKey();
    // 値を取得
    ValueClass val = entry.getValue();
}

イテレータを使用した場合

// 例:HashMap
Map<KeyClass, ValueClass> map = new HashMap(KeyClass, ValueClass>();

/*--- イテレータ ---*/

// イテレータ:キーをループ
for (Iterator<KeyClass> it : map.keySet().iterator(); it.hasNext(); ) {
    KeyClass key = it.next();
    // keyを処理
}

// イテレータ:値をループ
for (Iterator<ValueClass val : map.values().iterator(); it.hasNext(); ) {
    ValueClass val = it.next();
    // valを処理
}

// イテレータ:キーと値をループ
for (Iterator<Map.Entry<KeyClass, ValueClass>> it = map.entrySet().iterator(); it.hasNext(); ) {
    // entryを取得
    Map.Entry<KeyClass, ValueClass> entry = it.next();
    // キーを取得
    KeyClass key = entry.getKey();
    // 値を取得
    ValueClass val = entry.getValue();
}

配列のfor文(おまけ)

// 初期化
SomeClass array[] = { new SomeClass(), new SomeClass() };

// 拡張for文:推奨
for (SomeClass item : array) {
    // itemを処理
}

// インデックス:非推奨
for (int i = 0, len = array.length(); i < size; i++) {
    SomeClass item = array[i];
    // itemを処理
}

List・Mapに関して覚えておくべき項目について

とりあえずよく遭遇する状況を選抜

  1. List・Mapの初期化方法
  2. ループ中に要素の追加・削除を行う方法
  3. List(コレクション)と配列の相互変換