Perbezaan Antara Koleksi.clear () dan Collection.removeAll ()

1. Gambaran keseluruhan

Dalam tutorial ini cepat, kita akan belajar tentang dua Collection kaedah yang mungkin kelihatan untuk melakukan perkara yang sama, tetapi bukan: jelas () dan removeAll () .

Pertama kita akan melihat definisi kaedah dan kemudian menggunakannya dalam contoh pendek.

2. Koleksi. Jelas ()

Kami akan terlebih dahulu menyelami kaedah Collection.clear () . Mari kita periksa Javadoc kaedahnya. Menurutnya, tujuan jelas () adalah membuang setiap elemen dari senarai.

Jadi, pada dasarnya, memanggil jelas () pada senarai apa pun akan menyebabkan senarai menjadi kosong.

3. Koleksi.singkirkanSemua ()

Kita sekarang akan melihat Javadoc of Collection.removeAll () . Kita dapat melihat bahawa kaedah mengambil Koleksi sebagai hujah. Dan tujuannya adalah untuk menghapus semua elemen umum antara senarai dan koleksi.

Oleh itu, apabila memanggilnya pada koleksi, ia akan membuang semua elemen dari argumen yang disahkan yang juga terdapat dalam koleksi yang kita panggil removeAll () .

4. Contohnya

Sekarang mari kita melihat beberapa kod untuk melihat kaedah-kaedah tersebut dalam tindakan. Kami pertama kali akan membuat kelas ujian dengan nama ClearVsRemoveAllUnitTest .

Selepas itu, kami akan membuat ujian pertama untuk Collection.clear () .

Kami akan memulakan koleksi Bilangan bulat dengan beberapa nombor dan memanggil dengan jelas () di atasnya sehingga tidak ada unsur yang kekal dalam senarai:

@Test void whenClear_thenListBecomesEmpty() { Collection collection = new ArrayList(Arrays.asList(1, 2, 3, 4, 5)); collection.clear(); assertTrue(collection.isEmpty()); }

Seperti yang kita lihat, koleksi kosong setelah jelas () dipanggil.

Mari buat ujian kedua dengan dua koleksi, satu dengan nombor dari 1 hingga 5 dan yang lain dengan nombor dari 3 hingga 7. Selepas itu, kami akan memanggil removeAll () pada koleksi pertama dengan yang kedua sebagai parameter.

Kami menjangkakan hanya nombor 1 dan 2 yang kekal dalam koleksi pertama (sementara yang kedua tidak berubah):

@Test void whenRemoveAll_thenFirstListMissElementsFromSecondList() { Collection firstCollection = new ArrayList( Arrays.asList(1, 2, 3, 4, 5)); Collection 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); }

Dan harapan kami dipenuhi. Hanya nombor 1 dan 2 yang tinggal di koleksi pertama dan yang kedua belum diubah.

5. Kesimpulan

Dalam artikel ini, kami telah melihat tujuan Collection.clear () dan Collection.removeAll () .

Walaupun apa yang mungkin kita fikirkan pada awalnya, mereka tidak melakukan perkara yang sama. clear () menghapus setiap elemen dari koleksi dan remove All () satu hanya membuang elemen yang sepadan dengan elemen dari Koleksi lain .

Dan, seperti biasa, kodnya boleh didapati di GitHub.