2010-12-06 30 views
0

私はModuleというarraylistを持っています。パラメータとして渡されたインデックスに基づいてArrayListからモジュールを削除するメソッドを作成します。これは私がこれまでに持っているものですが、うまくいきません。任意の提案をお願いします(初心者)? SimonJavaのArrayListから削除

/** 
* This method deletes a module object from the ArrayList 
* @param theModule The module object that will be deleted from the ArraList 
*/ 
public void deleteModule (Module theModule) 
{ 
    modules.delete(theModule); 
} 
+1

「動作していない」とはどういう意味ですか?任意のエラー? 'modules'の定義などのコードを追加してください。 –

+0

'equals()'と 'hashCode()'をオーバーライドすることに関する(おそらく最高)Q&A:http://stackoverflow.com/questions/27581/ –

+0

あなたはパラメータとしてインデックスを渡していません。オブジェクト自体を渡します。 –

答えて

7

removeメソッドを試してください。

boolean success = someList.remove(someObject); 

そうSOメンバーとユニットテストが幸せではありません、equalshashcodeを実装するようにしてください。

1

削除は、ArrayListメソッドではないようです。

removeを使用してみてください。そして、equalsメソッドをオーバーライドするのを忘れないでください。それが存在している 場合

api

を見てみましょうが、このリストから 指定された要素の最初の発生を削除します。リストに が含まれていない場合、要素は変更されません。 (o == null?get(i)== null: o.equals(get(i)))(そのような要素がある場合は が存在する)インデックス番号iが最も小さい要素 を削除します。このリスト に指定された要素が含まれている場合はtrueを返します(または、 が呼び出された場合は と等価です)。

+0

フィードバックに感謝します。今はうまく動いているようです。サイモン – Simon

0

リストからオブジェクトを削除するには、そのインデックスを使用して、オブジェクトtheModuleのインデックスが最初に取得する必要があるので、一例では、この方法は、インデックスをModuleオブジェクトを取っていない。

public void deleteModule (Module theModule) 
{ 
    int moduleIndex = modules.indexOf(theModule); 
    modules.remove(moduleIndex); 
} 

それは本当に必要ないこれを行うにはしかし、のArrayListオブジェクトを取るremoveメソッドは、パラメータとして削除するためにサポートしています。

public void deleteModule (Module theModule) 
{ 
    modules.remove(theModule); 
} 

あなたのケースで問題があるということですmodules.delete(theModule);を呼び出します。 の代わりに modules.remove(theModule);

0

まず、Moduleがどのようにインデックスであるかわかりません。

インデックスに基づいてのArrayListから要素を削除する正しい方法は次のとおりです。

//ie: 
int index = 1; 
modules.remove(index); //Will remove the second element in the arraylist 

あなたはモジュールのArrayListであるModuleを削除したい場合は、パラメータとしてモジュールを送信することにより、これを行うことができますメソッドを削除する

modules.remove(module); 

ただし、ModuleがhashCode()とequals()を正しく実装していることを確認する必要があります。 通常、すべての標準IDEがこれを生成できます。

関連する問題