(JAVA)ArrayListがremove出来ない

JAVAでArrayList.removeが上手く動かなかった。

指定した番号の要素を削除したいときにIntegerクラスを引数として渡していたことが原因。

ArrayList.removeはオーバーロードされている。
引数がint型のときは引数で指定された要素を昨序する。
int型以外の場合(Objectクラスの場合)は引数と一致する要素を削除する。

今回の場合は引数と一致するIntegerクラスを探して、その要素を削除する挙動になってしまっていた。
一旦int型に変換して引数として渡すと指定した番号の要素を削除するようになった。

Integerクラスはint型のラッパークラスなので多くの場合はint型と同様の振る舞いをする。
ただこのように明らかに異なる結果が出力されることもある。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA


このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください