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

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