05/09/11 11:23 pm
FindBugsというツールを使っていて分かった事。map#entrySetを使うとパフォーマンスが良い。
/*
* $Id: MapEntryLooping.java 1056 2005-09-11 14:23:25Z s-okita $
*
* Copyright 2005 satoshiokita. All rights reserved.
*/
package org.oklab.tips;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
/**
* java.util.MapのkeySetよりentrySetの方が効率が良いので
* サンプルを書く。
* @author satoshiokita
*/
public class MapEntryLooping {
public static void main(String[] args) {
// テストデータ
Map maps = new HashMap();
maps.put("AA", "1");
maps.put("BB", "2");
maps.put("CC", "3");
iterateKeySet(maps);
iterateEntrySet(maps);
}
/**
* map#keySetを実行する
* @param maps
*/
private static void iterateKeySet(Map maps) {
// keySetメソッドを使っている。
// この時キー値の格納処理を内部で行っている。
Iterator it = maps.keySet().iterator();
while (it.hasNext()) {
// キーを取り出す。
String key = (String) it.next();
// 値を取り出すが、この時走査している。
String value = (String) maps.get(key);
System.out.println(key + ":" + value);
}
}
/**
* map#entrySetを実行する
* @param maps
*/
private static void iterateEntrySet(Map maps) {
Iterator it = maps.entrySet().iterator();
while (it.hasNext()) {
Map.Entry entry = (Map.Entry) it.next();
String key = (String) entry.getKey();
// iterateKeySetの処理とは異なり
// 此処で走査の処理が入らないため効率が良い
String value = (String) entry.getValue();
System.out.println(key + ":" + value);
}
}
}