リストから重複を効率的に削除する
リストを操作する場合、データ処理を効率化するために重複要素を削除することが必要になることがよくあります。ただし、次のコード スニペットでは問題が発生する可能性があります:
List<Customer> listCustomer = new ArrayList<>(); for (Customer customer: tmpListCustomer) { if (!listCustomer.contains(customer)) { listCustomer.add(customer); } }
制限事項は何ですか?
このアプローチは、contains() メソッドに依存して重複をチェックします。ただし、オブジェクトを効果的に比較するために Customer クラスが equals() メソッドと hashCode() メソッドをオーバーライドする場合にのみ正しく機能します。これらのメソッドが実装されていないか、正しく実装されていない場合、重複が検出されず、不正確な結果が生じる可能性があります。
効率的な削除テクニック
重複を効果的に削除するには、2 つの方法があります。考慮事項:
要素の既存の順序を維持することが重要な場合は、LinkedHashSet を使用します。このセットでは挿入順序が保持されるため、シーケンスを維持しながらリストに変換し直すことができます。
List<Customer> depdupeCustomers = new ArrayList<>(new LinkedHashSet<>(customers));
元のリストの変更が許容される場合は、セットを利用して一意の要素を保存し、それに応じて元のリストを更新します。
Set<Customer> depdupeCustomers = new LinkedHashSet<>(customers); customers.clear(); customers.addAll(dedupeCustomers);
どちらの方法でも、リストから重複を削除し、データの整合性を確保し、パフォーマンスを最適化するための効率的なソリューションが提供されます。 .
以上がJava でリストから重複を効率的に削除するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。