1概要

このクイックチュートリアルでは、同じことをする可能性があるが、

clear()



removeAll()

という2つの

Collection

メソッドについて学びます。

最初にメソッド定義を見てから、短い例でそれらを使用します。



2. Collection.clear()


最初に

Collection.clear()

メソッドについて説明します。

メソッドのJavadoc

を確認しましょう。それによると、____clear()の目的はリストからすべての要素を削除することです。

したがって、基本的に、任意のリストに対して

clear()

を呼び出すと、そのリストは空になります。



3. Collection.removeAll()



Collection.removeAllのhttps://docs.oracle.com/javase/9​​/docs/api/java/util/Collection.html#removeAll-java.util.Collection-[Javadoc]を見てみましょう()

メソッドが

Collection

を引数として取ることがわかります。 ** そしてその目的は、リストとコレクションの間の共通要素をすべて削除することです。

そのため、コレクションに対して呼び出すと、

removeAll()

を呼び出すコレクションにも含まれる、渡された引数からすべての要素が削除されます。


4例

それでは、いくつかのコードを見て、これらのメソッドが動作していることを確認しましょう。最初に

ClearVsRemoveAllUnitTest

という名前のテストクラスを作成します。

その後、

Collection.clear()

の最初のテストを作成します。


Integers

のコレクションをいくつかの数字で初期化し、その上で

clear()

を呼び出して、リストに要素が残らないようにします。

@Test
void whenClear__thenListBecomesEmpty() {
    Collection<Integer> collection = new ArrayList<>(Arrays.asList(1, 2, 3, 4, 5));

    collection.clear();

    assertTrue(collection.isEmpty());
}

ご覧のとおり、

clear()

が呼び出された後、コレクションは空になります。

2つのコレクションを持つ2つ目のテストを作成しましょう。1つは1から5までの番号を持ち、もう1つは3から7までの番号を持ちます。その後、最初のコレクションで

removeAll()

を呼び出します。

最初のコレクションには1と2の数字だけが残ります(2番目のコレクションは変更されません)。

@Test
void whenRemoveAll__thenFirstListMissElementsFromSecondList() {
    Collection<Integer> firstCollection = new ArrayList<>(
      Arrays.asList(1, 2, 3, 4, 5));
    Collection<Integer> secondCollection = new ArrayList<>(
      Arrays.asList(3, 4, 5, 6, 7));

    firstCollection.removeAll(secondCollection);

    assertEquals(
      Arrays.asList(1, 2),
      firstCollection);
    assertEquals(
      Arrays.asList(3, 4, 5, 6, 7),
      secondCollection);
}

そして私たちの期待は満たされています。最初のコレクションには1と2の数字だけが残り、2番目のコレクションは変更されていません。


5結論

この記事では、

Collection.clear()



Collection.removeAll()

の目的について説明しました。

私たちが最初に考えるかもしれないにもかかわらず、彼らは同じことをしていません。


clear()

はコレクションからすべての要素を削除し、

removeAll()

oneは他の

Collection

から一致する要素のみを削除します。

そして、いつものように、コードはhttps://github.com/eugenp/tutorials/tree/master/core-java-collections[over on GitHub]にあります。