Javaでは、list.remove(Object o)メソッドを使用してリストからオブジェクトを削除できます。このメソッドは、オブジェクトのequalsメソッドを使用してリスト内の要素を識別します。しかし、これにはequalsメソッドをオーバーライドする必要があります(そうでなければ、参照を比較するequalsメソッドのデフォルトの実装が使用されます)。しかし、オブジェクトのリストを扱っていて、開発者がオブジェクトのソースコードを変更してequalsメソッドを実装する自由がない場合は、どうすればよいですか?私はなぜjavaがlist.remove(Object o、Comparator c)のようなメソッドを提供していないのだろうかと疑問に思っています。これはカスタム等価条件(コンパレータで実装されています)リストからオブジェクトを削除する方法
2
A
答えて
2
もっと複雑なものが必要な場合は、いつでも自分の反復を行い、任意の比較を実行してから、List.remove(int)
を使用してインデックスで削除できます。
1
私はこのための小さなフレームワークを書かれている:
は実装します
http://softsmithy.sourceforge.net/lib/docs/api/org/softsmithy/lib/util/Matcher.html
を次に使用します。
http://softsmithy.sourceforge.net/lib/docs/api/org/softsmithy/lib/util/Matchers.html
をライブラリはオープンソースで、からダウンロードすることができますここ:
http://sourceforge.net/projects/softsmithy/files/softsmithy/v0.1/
やMavenと:
<dependency>
<groupId>org.softsmithy.lib</groupId>
<artifactId>lib-core</artifactId>
<version>0.1</version>
</dependency>
関連する問題
- 1. 別のリストからオブジェクトのリストを削除する
- 2. リスト(Of myClass)からオブジェクトをオブジェクト値で削除するには?
- 3. リストから重複を削除する方法
- 4. 一般リストからアイテムを削除する方法
- 5. clisp:リストのリストから削除する
- 6. 表示リストからオブジェクトを削除する
- 7. jqueryの配列オブジェクトから項目を削除する方法
- 8. オブジェクトjavascriptから関数を削除する方法
- 9. キャンバスからオブジェクトを削除する方法は?
- 10. mongodbの配列からオブジェクトを削除する方法は?
- 11. オブジェクトのリスト内の複数のオブジェクトをプロパティで削除する方法
- 12. リストから要素を削除する
- 13. リストからアイテムを削除する
- 14. ShareActionProviderリストからYourSelfを削除する
- 15. リストからアイテムを削除する - C#
- 16. リストからアイテムを削除する
- 17. データソースからアイテムを削除せずにリストからアイテムを削除する - c#
- 18. jQueryオブジェクトからアイテムを削除する
- 19. ArrayListからオブジェクトを削除する
- 20. moment.jsオブジェクトからタイムゾーンを削除する
- 21. std :: listからオブジェクトを削除する
- 22. JSONArrayからオブジェクトを削除する
- 23. observableArrayからオブジェクトを削除する
- 24. nhibernate:削除せずにコレクションからオブジェクトを削除する
- 25. DataGridviewから削除中にテキストファイルからコンテンツを削除する方法
- 26. Django admin - 変更リストのオブジェクト削除リンクを取得する方法は?
- 27. カスタムベースアダプターを使用してリストからアイテムを追加/削除する方法
- 28. Android longclicklistenerを使ってリストから項目を削除する方法
- 29. コールバックを持つ別のオブジェクトが所有するオブジェクトを、削除するオブジェクトから削除できますか?
- 30. かみそりビューでオブジェクトを削除しながら、「削除」リンクを無効にする方法を
たびに、私は削除するので、私は、例えば3つのオブジェクトは、その後、私は非常に慎重をループしており、削除なり、削除している場合、これは、複雑ですリストのサイズが小さくなります。したがって、forループ(リストの最初のサイズに達するまで繰り返します)を使用すると例外が発生する可能性があります(インデックス上のオブジェクトを削除しようとする可能性があるためです)。実際のサイズよりも高い)...これを回避したい – Gaurav
@ Gaurav:その典型的な解決策は、リストのサイズを毎回(そしてインデックスを減らす)最後から最後まで。 –
または、 'Iterator.remove()'を使用してください。 –