コレクション・フレームワーク (1/5)
作成:2012-05-06 10:14
更新:2012-05-06 10:14
更新:2012-05-06 10:14
■配列の限界とコレクション・フレームワーク
プログラムを作成するとき、「多数のオブジェクトをまとめて管理する」ということはよくあります。こうした場合、おそらく今までは「配列」を利用してきたことでしょう。配列は、たくさんの値やオブジェクトにインデックス番号をつけて管理します。これはこれで便利なのですが、しかし時には「融通がきかないなぁ」と感じることもあるはずです。配列の問題点・欠点を整理すると以下のようになるでしょう。
・要素の増減ができない
真っ先に思いつくのはこれでしょう。配列は、最初に要素数を指定して作成します。10個の値を保管できる配列を作ったあとで、「やっぱり20個保管しておきたい」と思っても、それはできません。新しい配列を作って入れなおすしかありません。
・番号でしか管理できない
配列はインデックス番号で保管している値を管理します。が、例えば他の言語では、「連想配列」といってラベル(名前)で値を管理したりすることができるものもあります。こうした機能は配列にはありません。
・機能が弱い
配列では、例えば、値の大きさにあわせて順番を並べ替えたり、なんてことはできません。せっかくたくさんの値をまとめて管理しているのに、それを活かす機能があんまり用意されていません。
こうした欠点を補い、もっと絨毯にオブジェクト類をまとめられるような機能が欲しい――そのような要望に答えるものとして、Javaに用意されたのが「コレクション・フレームワーク」と呼ばれるものです。
コレクション・フレームワークは、複数のクラスからなるライブラリです。といっても、別途インストールしたりするのではなくて、Java SEに最初から組み込まれています。このフレームワークに用意されているクラスは、整理すると以下の3種類のものに分けて考えることができます。
リスト――これが一番配列に近いコレクションでしょう。リストは、多数のオブジェクトを順序付けて整理します。組み込んだオブジェクトは、その組み込み順に整理されており、番号で取り出したりできます。
マップ――これが、一般に連想配列と呼ばれるものです。値は番号ではなく「キー」と呼ばれる名前をつけて保管されます。保管されている値は番号付けして整理されてはいません。
セット――集合を扱うためのものです。集合と配列と何が違うかというと、「集合は、同じデータを複数持たない」という点です。また集合はデータに順番付けの概念がありません。
このように、性質の異なるクラスがいくつも用意されているのですね。また、例えばリストにしても、1つしかないわけではなく、リストの性質を持つクラスがいくつも用意されています。それらの中で、もっとも用途に合うものを選んで利用することができるのです。
ただし、あまりにクラスが多いと何が何だかわからないので、ここでは汎用性の高いものに絞って「これだけ覚えておけばコレクションの基本はOK」というものを紹介することにしましょう。
※コレクションのパッケージについて
このコレクション・フレームワークの主なクラスは、「java.util」パッケージにまとめられています。ですので、利用する場合には、java.utilパッケージにあるクラスをimportしておくことになります。これは忘れないようにしましょう。
・要素の増減ができない
真っ先に思いつくのはこれでしょう。配列は、最初に要素数を指定して作成します。10個の値を保管できる配列を作ったあとで、「やっぱり20個保管しておきたい」と思っても、それはできません。新しい配列を作って入れなおすしかありません。
・番号でしか管理できない
配列はインデックス番号で保管している値を管理します。が、例えば他の言語では、「連想配列」といってラベル(名前)で値を管理したりすることができるものもあります。こうした機能は配列にはありません。
・機能が弱い
配列では、例えば、値の大きさにあわせて順番を並べ替えたり、なんてことはできません。せっかくたくさんの値をまとめて管理しているのに、それを活かす機能があんまり用意されていません。
こうした欠点を補い、もっと絨毯にオブジェクト類をまとめられるような機能が欲しい――そのような要望に答えるものとして、Javaに用意されたのが「コレクション・フレームワーク」と呼ばれるものです。
コレクション・フレームワークは、複数のクラスからなるライブラリです。といっても、別途インストールしたりするのではなくて、Java SEに最初から組み込まれています。このフレームワークに用意されているクラスは、整理すると以下の3種類のものに分けて考えることができます。
リスト――これが一番配列に近いコレクションでしょう。リストは、多数のオブジェクトを順序付けて整理します。組み込んだオブジェクトは、その組み込み順に整理されており、番号で取り出したりできます。
マップ――これが、一般に連想配列と呼ばれるものです。値は番号ではなく「キー」と呼ばれる名前をつけて保管されます。保管されている値は番号付けして整理されてはいません。
セット――集合を扱うためのものです。集合と配列と何が違うかというと、「集合は、同じデータを複数持たない」という点です。また集合はデータに順番付けの概念がありません。
このように、性質の異なるクラスがいくつも用意されているのですね。また、例えばリストにしても、1つしかないわけではなく、リストの性質を持つクラスがいくつも用意されています。それらの中で、もっとも用途に合うものを選んで利用することができるのです。
ただし、あまりにクラスが多いと何が何だかわからないので、ここでは汎用性の高いものに絞って「これだけ覚えておけばコレクションの基本はOK」というものを紹介することにしましょう。
※コレクションのパッケージについて
このコレクション・フレームワークの主なクラスは、「java.util」パッケージにまとめられています。ですので、利用する場合には、java.utilパッケージにあるクラスをimportしておくことになります。これは忘れないようにしましょう。
(by. SYODA-Tuyano.)
※プログラムリストが表示されない場合
AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。
※関連コンテンツ