配列管理クラスの要素の型
配列管理クラスの要素の型(クラス)についてです。ここでいう配列管理クラスとは、java.util.ArrayList クラスなどのことです。
配列管理クラスでは、任意の型の要素を管理できることが多いです。しかし配列は、ただ1種類の型――同じ種類の型――の要素を管理する「仕組み」だと思います。
配列管理クラスを使用する場合、要素の型は、ただ1種類だけ管理すると良いと思います。
配列管理クラスで要素の型を1種類だけ管理する場合、次のような良い点があるでしょう。
- 配列管理クラスの処理において、同じ型の要素を取り扱うと理解できます。よって同じ型の要素の集合を管理している、と理解できます。
例:
配列管理クラスの処理において、「文字列型の要素だけ取り扱う」と理解できた場合、文字列の集合を管理している、と理解できます。 - 配列管理クラスは、1種類の型の要素を管理するために、便利なメソッドを用意しています。この便利なメソッドを再利用できると、プログラム作成の負荷を軽減できます。
配列管理クラスの要素の型について、図で示します。
配列管理クラスで要素の型が1種類の場合、次のようなイメージだと思います。
例:配列管理クラスの要素が、文字列型の場合。
要素番号 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | …… |
要素の型 | 文字 列型 | 文字 列型 | 文字 列型 | 文字 列型 | 文字 列型 | 文字 列型 | 文字 列型 | 文字 列型 | 文字 列型 |
水色が、横1列に並んでいるイメージです。
配列管理クラスの例

配列のイメージ画像
ここでは配列管理クラスの例として、java.util.ArrayList クラスを使います。
ArrayList クラスでは、任意の型(クラス)の要素を管理できます。
例:ArrayList の add(Object obj) メソッド。
Object型は、Javaの全ての型(クラス)を取り扱える型です。
よって、add(Object obj) メソッドの引数 obj に、任意の型(例:String型・Integer型など)を指定できます。
文字列型の要素だけ取り扱う場合
以上のように任意の型を指定できますが、ArrayList クラスの一つの変数に対して、同じ型の要素だけを追加すると良いでしょう。
例:
ArrayList クラスの stringList 変数に対して、add(Object obj) メソッドを使う場合は、文字列型の要素だけを追加します。
stringList.add(“文字列その1“);
stringList.add(“文字列その2“);
stringList.add(“文字列その3“);
次のような理由のためです。
- ArrayList クラスの一つの変数において、全体の管理処理を理解しやすくするため。
例:複数個の文字列要素を管理していると、理解しやすくするため。 - ArrayList クラスが持つ便利なメソッドを、再利用するため。
例:ArrayList の size() メソッドについて、文字列型だけの要素の個数を取得するために、再利用するため。
参考:要素の型が2種類の場合
配列管理クラスで要素の型が2種類の場合、次のようなイメージだと思います。
例:配列管理クラスの要素が、文字列型と整数型の場合。
要素番号 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | …… |
要素の型 | 文字 列型 | 文字 列型 | 整数 型 | 文字 列型 | 整数 型 | 整数 型 | 文字 列型 | 文字 列型 | 文字 列型 |
水色と緑色が、横1列において混ざっているイメージです。
例えばArrayList クラスの一つの変数で文字列型と整数型の要素を管理した場合、次のような都合が悪い点があります。
ArrayList クラスの一つの変数において、全体の管理処理を理解しにくくなります。
例:
ある時は文字列型の要素を管理して、ある時は整数型の要素を管理しているということで、管理対象が曖昧になります。
ArrayList クラスの変数名を、stringList にできません。string(文字列型)以外の要素も、取り扱っているからです。
ArrayList クラスが持つ便利なメソッドを再利用しにくくなります。
例:
ArrayList の size() メソッドを使って、文字列型だけの要素の個数を取得できないからです。
ArrayList の size() メソッドでは、「文字列型の要素」と「整数型の要素」を合計した個数を、取得することになります。なので「要素の個数情報」において、情報の粒度が粗く(大きく)なってしまいます。
配列クラスで「2種類の型の要素」を管理
配列管理クラスを使用する場合、要素の型は「ただ1種類だけ」管理すると良いでしょう、と言いました。
それでは、配列管理クラスで「2種類の型の要素」を管理したい場合、どうすると良いでしょうか。一つの「やり方」に、それら2種類の型の要素を束ねる型(クラス)を使用する方法があります。
束ねる型の例
配列管理クラスで、2種類の型「文字列型と整数型の要素」を管理したい場合、それら2種類の型の要素を束ねる項目型(クラス)を使用します。
class Item { private String text; private Integer value; …… }
配列管理クラスで、要素の型が「2種類の型の要素を束ねる型」の場合、次のようなイメージになると思います。
以下に、配列管理クラスの要素が項目型の場合を図で示します。
要素番号 | 0 | 1 | 2 | 3 | 4 | …… | ||||||||||||||||||
要素の型 |
赤色の四角形が、横1列に並んでいるイメージです。
プログラムの例
ここでは配列管理クラスの例として、java.util.ArrayList クラスを使います。
ArrayList クラスの一つの変数に対して、「項目型の要素だけ」を追加すると良いでしょう。
例:
ArrayList クラスの itemList 変数に対して、add(Object obj) メソッドを使う場合は、項目型の要素だけを追加します。
itemList . add( item1 ); itemList . add( item2 ); itemList . add( item3 );
item1変数は、クラス Item の変数です。item2 , item3 変数も同様です。
※この記事は、2004年7月当時の記事になります。