マップと言うと、地図を思い浮かべる方が多いと思いますが、プログラミングでは「あるオブジェクトに対応づけられているオブジェクトの集合」ってことになります。鍵の束と、金庫がたくさんあるような状態って言えばいいんでしょうか。
Javaでデフォルトで提供されているMapは、キーが1つに対して値が1つなんですが、これだとやや不便な場合があります。たとえば、学校のクラスの生徒数を調べたい場合に、学年とクラス番号をキーとして扱えればいいなぁというような状態。ま、単純に学年とクラス番号を1つのオブジェクトとして扱って、1つのキーとするのが一番手っ取り早いんですが、そのために毎回オブジェクトを作成するのもなんかもったいない気がする、てことで2つキーを持つマップを作ってみました。
初めはかなり思いつきで、HashMapの模倣版を作成。適当に作ったわりには簡単にできた感触。そのあとは、JavaAPIを見習って、その上位のAbstractクラスを作ってみました。AbstractMapを参考にしたんですが、かなりよくできてます。パフォーマンスはおいといて、端的に実現するにはあんな方法があるんですね。entrySetを実装するだけで、ほとんどのメソッドが使用できるなんてかなりありがたい話です。
コメントする