そのため、配列と配列メソッドのみからarraySetを作成しようとしています。選択したアイテムのインデックスを見つける次のコードがあります (各メソッドが何をすべきかを理解できるようにコメントを含めました)。ご覧のとおり、アイテムを追加する前に、findIndex メソッドで add メソッドを呼び出します。私が抱えている問題は、findIndex メソッドがエラーを引き起こすことです (戻り値がありません)。コードが見つけたアイテムの int インデックスだけを返すにはどうすればよいですか? (コード内の疑問符は、私が行き詰まっている場所を示すためのものです)
/** Find the index of an element in the dataarray, or -1 if not present
* Assumes that the item is not null
*/
private int findIndex(Object item) {
for(int i=0; i<data.length;i++){
if(data[i] == item){
return i;
}
}
return ???
}
/** Add the specified element to this set (if it is not a duplicate of an element
* already in the set).
* Will not add the null value (throws an IllegalArgumentException in this case)
* Return true if the collection changes, and false if it did not change.
*/
public boolean add(E item) {
if(item == null){
throw new IllegalArgumentException();
}
else if(contains(item) == true){
throw new IndexOutOfBoundsException();
}
else{
int index = findIndex(item);
if(index<0||index>count){
throw new IndexOutOfBoundsException();
}
ensureCapacity();
for(int i=count; i>index; i--){
data[i]=data[i-1];
}
data[index] = item;
count++;
return true;
}
}