Mapの全要素走査

で、今までかなりいけてないコードを書いてた。


for (Object key : map.keySet()) {
Object value = map.get(key);
// ・・・
}
これだと、Mapのkeyの全要素を見つつ、map.get(key)でMap内を検索して
valueを取得しているので、map.get(key)の部分がかなりの無駄。
要素がたくさんあると、遅くなりそうだし。


素直にこう書くのが、正解のはず。


for (Map.Entry entry : map.entrySet()) {
Object key = entry.getKey();
Object value = entry.getValue();
}
なんで、1つ目のパターンで実装してたんだか・・・。




Map.Entryは、Mapインターフェースに定義されているEntryというインターフェース。
インターフェース内にインターフェースが定義されてるのってちょっと不思議な感じ。