公式のJavaドキュメントで次のコードを見つけました:
collection.removeAll(Collections.singleton(element));
このアプローチの利点を理解できませんでした。通常の要素削除はなぜですか?
collection.remove(element);
ありがとう!
公式のJavaドキュメントで次のコードを見つけました:
collection.removeAll(Collections.singleton(element));
このアプローチの利点を理解できませんでした。通常の要素削除はなぜですか?
collection.remove(element);
ありがとう!
前者はコレクション内の要素のすべての出現を削除し、後者は最初の要素のみを削除します。
ACC。ドキュメントへ:
コレクション c から指定された要素 e のすべてのインスタンスを削除するには、次のイディオムを検討してください。
collection.removeAll(Collections.singleton(element));
whilecollection.remove(element);
は、指定された要素の単一のインスタンスをこのコレクションから削除します
したがって、すべてのインスタンスを削除するには、後者のアプローチでループ構造を使用する必要があります。最初のものでは、それはたった1行の仕事です。
APIから
remove(Object o)
指定された要素の単一のインスタンスが存在する場合、このコレクションから削除します
と:
removeAll(Collection c)
指定されたコレクションにも含まれているこのコレクションの要素をすべて削除します
したがって、削除したい要素がコレクションに複数ある場合は、collection.remove(element) を数回実行する必要がありますが、removeAll は 1 回だけ実行します。removeAll はコレクションを引数として取るため、Collection.singleton を使用すると、引数が 1 つだけのコレクションを簡単に作成できます。
テスト時(単体テスト)。Collections.singleton
件名をコレクションに変換する 1 行の方法です。代替手段は 2 行で、面倒ではありません。