配列管理クラスの要素の型・Javaソースコードの書き方

配列管理クラスの要素の型

配列管理クラスの要素の型(クラス)についてです。ここでいう配列管理クラスとは、java.util.ArrayList クラスなどのことです。

配列管理クラスでは、任意の型の要素を管理できることが多いです。しかし配列は、ただ1種類の型――同じ種類の型――の要素を管理する「仕組み」だと思います。
配列管理クラスを使用する場合、要素の型は、ただ1種類だけ管理すると良いと思います。

配列管理クラスで要素の型を1種類だけ管理する場合、次のような良い点があるでしょう。

  • 配列管理クラスの処理において、同じ型の要素を取り扱うと理解できます。よって同じ型の要素の集合を管理している、と理解できます。
    例:
    配列管理クラスの処理において、「文字列型の要素だけ取り扱う」と理解できた場合、文字列の集合を管理している、と理解できます。
  • 配列管理クラスは、1種類の型の要素を管理するために、便利なメソッドを用意しています。この便利なメソッドを再利用できると、プログラム作成の負荷を軽減できます。

配列管理クラスの要素の型について、図で示します。
配列管理クラスで要素の型が1種類の場合、次のようなイメージだと思います。
例:配列管理クラスの要素が、文字列型の場合。

要素番号01234567……
要素の型文字
列型
文字
列型
文字
列型
文字
列型
文字
列型
文字
列型
文字
列型
文字
列型
文字
列型

水色が、横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種類の場合、次のようなイメージだと思います。
例:配列管理クラスの要素が、文字列型整数型の場合。

要素番号01234567……
要素の型文字
列型
文字
列型
整数
文字
列型
整数
整数
文字
列型
文字
列型
文字
列型

水色緑色が、横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種類の型の要素を束ねる型」の場合、次のようなイメージになると思います。
以下に、配列管理クラスの要素が項目型の場合を図で示します。

要素番号01234……
要素の型
 
 
 
 
 
 
 
 
 
 
 
 

赤色の四角形が、横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月当時の記事になります。

コンピューター
この記事をシェアする

グッズ・メモランダム