4

公式のJavaドキュメントで次のコードを見つけました:

collection.removeAll(Collections.singleton(element));

このアプローチの利点を理解できませんでした。通常の要素削除はなぜですか?

collection.remove(element);

ありがとう!

4

4 に答える 4

8

前者はコレクション内の要素のすべての出現を削除し、後者は最初の要素のみを削除します。

于 2013-02-07T12:24:06.580 に答える
5

ACC。ドキュメントへ:

コレクション c から指定された要素 e のすべてのインスタンスを削除するには、次のイディオムを検討してください。

collection.removeAll(Collections.singleton(element));

whilecollection.remove(element);は、指定された要素の単一のインスタンスをこのコレクションから削除します

したがって、すべてのインスタンスを削除するには、後者のアプローチでループ構造を使用する必要があります。最初のものでは、それはたった1行の仕事です。

于 2013-02-07T12:24:40.153 に答える
3

APIから

remove(Object o)
指定された要素の単一のインスタンスが存在する場合、このコレクションから削除します

と:

removeAll(Collection c)
指定されたコレクションにも含まれているこのコレクションの要素をすべて削除します

したがって、削除したい要素がコレクションに複数ある場合は、collection.remove(element) を数回実行する必要がありますが、removeAll は 1 回だけ実行します。removeAll はコレクションを引数として取るため、Collection.singleton を使用すると、引数が 1 つだけのコレクションを簡単に作成できます。

于 2013-02-07T12:26:58.707 に答える
0

テスト時(単体テスト)。Collections.singleton件名をコレクションに変換する 1 行の方法です。代替手段は 2 行で、面倒ではありません。

于 2013-02-07T12:27:31.847 に答える