ほぷしぃ

Java言語入門 〜C言語を学んだ君へ〜

[第18回]演習問題V 第1問解答

第1問解答

MyVectorクラス

18演習問題1解答1

Ex18_01クラス

18演習問題1解答2

第1問解説

可変長の配列を作成する問題です。
通常、配列の大きさは変更できないため、このようなMyVectorクラスを使用すると、配列の長さを気にせずプログラムが書けます。
なお、可変長の配列を実装したクラスは基本APIにあります。
それは、「java.util.Vector」です。
興味があれば、調べてみてください。
少し前置きが長くなりましたが、以下にMyVectorクラスの解説をします。

MyVectorクラスの解説

2〜3行目

メンバ変数の宣言
1つは配列arrayです。
そして、もう1つは要素の最後尾を保持する変数tailです。
つまり、「要素数」を保持します。

5〜8行目

コンストラクタ
配列arrayの長さを10に、変数tailを0に初期化します。

11〜21行目

addメソッド
まずは例外処理を行います。
続いて、配列が要素でいっぱいであるかを調べます。
もし要素がいっぱいなら、元の配列より10大きい配列を新たに作成し、元の配列の要素をすべてコピーします。
そして、arrayに新しい配列を参照させます。
これにより、可変長の配列が実現できます。
その後は、指定位置indexに変数nを追加します。
ただし、ただ代入するのではなく、「挿入」により要素を格納します。
データを追加したら、変数tailを1増やします。

24〜28行目

removeメソッド
まずは例外処理を行います。
続いて、指定位置より後ろの要素を1つ分詰めて、要素を削除します。
削除したら、変数tailを1減らします。

31〜34行目

getメソッド
まずは例外処理を行います。
続いて、指定位置の要素を返します。

37〜39行目

sizeメソッド
要素数は変数tailが保持しているため、この変数の値を返します。



第1問-問題へ ページのトップへ 第2問-問題へ