id: String
とname: String
フィールドを持つオブジェクトがあります。javaリストから同じ値を持つオブジェクトを削除する方法
これらのオブジェクトの配列がある場合、技術的にオブジェクトポインタが異なるため、removeメソッドを使用すると、必要なオブジェクトは削除されません。
例:
List<ObjectA> newList = new ArrayList<>();
// Objecta1(id: a, name: a)
// Objecta2(id: b, name: b)
// Objecta3(id: b, name: b)
newList.add(objecta1);
newList.add(objecta2);
newList.remove(objecta3); --> will equal false
削除が正常にこれを行う持っているクリーンな方法は何ですか?
私が検索したところ、removeIfを使用して比較を行うことができました。また、イテレータを使用して、フィールドを自分で比較することもできます。 Javaで標準的でクリーンな方法があるかどうか疑問に思うだけです。ありがとう。
ん ' ObjectA'は 'equals()'をオーバーライドしますか? – Eran
@エラン - ねえ、それは私がやっていることだと思っていた。私はそれがこれを構造化する最もクリーンな方法であるかどうか疑問に思っていましたか? –
はい、カスタム比較などの代わりにequalsメソッドを使用する必要があります。結局のところ、2つのオブジェクトが等しいとみなされるべきかどうかをチェックしています。とにかくequalsをオーバーライドする必要があります。多くの方法がそれを使用しています。 – qxz