1 次元データ構造についてもう少し学習するために、Vector アナログを作成しています。
問題はこれです: 私の merge() メソッド (基本的に私の append() メソッドの拡張です) が ArrayOutOfBoundsException をスローしています。
MyVector クラス自体が長いので、関連部分を掲載します。
クラス/オブジェクト フィールド:
public class MyVector implements Cloneable
{
private Object[] data;
private static final int INITIAL_CAPACITY = 100;
private int size;
デフォルトの (現在は 1 つのみ) コンストラクターと append() メソッド:
public MyVector()
{
data = new Object[INITIAL_CAPACITY];
size = 0;
}
public void append(Object element)
{
if (size == data.length)
expand();
data[size++] = element;
}
merge() メソッド:
public void merge(MyVector vector2)
{
for(int i = this.size; i < (this.size + vector2.size()); ++i)
this.append(vector2.data[i]);
this.size += vector2.size();
}
呼ばれる場所:
vec.merge(vecCopy);
vec はクラスの前半で MyVector オブジェクトとして作成されますが、vecCopy は vec 内のデータへの参照のコピーです。
関連するコードはこれですべてです。答えは明らかだと思いますが、何らかの理由でそれを見ることができません。