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. リストからオブジェクトを削除する
- 3. コアデータのリストからNSEntityDescriptionオブジェクトを削除
- 4. リストの値を別のリストから削除する方法
- 5. リストのリストからアポストロフィを削除する方法
- 6. 他のコンポーネントからリストからアイテムを削除する方法
- 7. 別のリストからオブジェクトのリストを削除する
- 8. Pythonを使用してリストからオブジェクトを削除する方法
- 9. javaリストから同じ値を持つオブジェクトを削除する方法
- 10. リスト(Of myClass)からオブジェクトをオブジェクト値で削除するには?
- 11. Prologリストのリストから削除する方法
- 12. リストからすべての重複を削除する方法
- 13. リストから選択した行を削除する方法
- 14. 一般リストからアイテムを削除する方法
- 15. リストから項目を追加/削除する方法
- 16. リストから値を削除する方法
- 17. 配列リストから項目を削除する方法Java eclipse
- 18. 不可能 - リストからアイテムを削除する方法は?
- 19. 2つのリストからHTMLリストアイテムを削除する方法
- 20. リストから重複を削除するより速い方法
- 21. リストから項目を削除する方法
- 22. STLリストから構造レコードを削除する方法
- 23. リストから重複を削除する方法
- 24. リストからヌルを削除する方法
- 25. R - データテーブル内のリストから要素を削除する方法
- 26. リンクされたリストからノードを削除する方法は?
- 27. 入れ子リストから要素を削除する方法lisp
- 28. python3リストからスレッドオブジェクトを削除する方法
- 29. PFQueryを介してParseからオブジェクトを削除する方法
- 30. リストから特定のデータを含むオブジェクトを削除する
たびに、私は削除するので、私は、例えば3つのオブジェクトは、その後、私は非常に慎重をループしており、削除なり、削除している場合、これは、複雑ですリストのサイズが小さくなります。したがって、forループ(リストの最初のサイズに達するまで繰り返します)を使用すると例外が発生する可能性があります(インデックス上のオブジェクトを削除しようとする可能性があるためです)。実際のサイズよりも高い)...これを回避したい – Gaurav
@ Gaurav:その典型的な解決策は、リストのサイズを毎回(そしてインデックスを減らす)最後から最後まで。 –
または、 'Iterator.remove()'を使用してください。 –