Perbedaan Antara Collection.clear () dan Collection.removeAll ()

1. Ikhtisar

Dalam tutorial singkat ini, kita akan belajar tentang dua metode Collection yang mungkin tampak melakukan hal yang sama, tetapi tidak: clear () dan removeAll () .

Pertama kita akan melihat definisi metode dan kemudian menggunakannya dalam contoh singkat.

2. Collection.clear ()

Kami pertama-tama akan menyelami metode Collection.clear () . Mari kita periksa Javadoc dari metode tersebut. Menurutnya, tujuan clear () adalah menghapus setiap elemen dari daftar.

Jadi, pada dasarnya, memanggil clear () pada daftar apa pun akan mengakibatkan daftar menjadi kosong.

3. Collection.removeAll ()

Sekarang kita akan melihat Javadoc of Collection.removeAll () . Kita dapat melihat bahwa metode tersebut menggunakan Collection sebagai argumen. Dan tujuannya adalah untuk menghapus semua elemen umum antara daftar dan koleksi.

Jadi, saat memanggilnya pada sebuah koleksi, itu akan menghapus semua elemen dari argumen yang diteruskan yang juga ada dalam koleksi yang kita sebut removeAll () .

4. Contoh

Sekarang mari kita lihat beberapa kode untuk melihat metode tersebut beraksi. Pertama-tama kita akan membuat kelas pengujian dengan nama ClearVsRemoveAllUnitTest .

Setelah itu, kita akan membuat pengujian pertama untuk Collection.clear () .

Kami akan menginisialisasi kumpulan Integer dengan beberapa angka dan memanggil clear () di atasnya sehingga tidak ada elemen yang tersisa di daftar:

@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 clear () dipanggil.

Mari buat tes kedua dengan dua koleksi, satu dengan angka dari 1 sampai 5 dan yang lainnya dengan angka dari 3 sampai 7. Setelah itu, kita akan memanggil removeAll () pada koleksi pertama dengan yang kedua sebagai parameter.

Kami berharap hanya nomor 1 dan 2 yang tersisa di koleksi pertama (sedangkan 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 terpenuhi. Hanya nomor 1 dan 2 yang tersisa di koleksi pertama dan yang kedua belum diubah.

5. Kesimpulan

Di artikel ini, kita telah melihat tujuan Collection.clear () dan Collection.removeAll () .

Terlepas dari apa yang mungkin kita pikirkan pada awalnya, mereka tidak melakukan hal yang sama. clear () menghapus setiap elemen dari koleksi dan removeAll () satu hanya menghapus elemen yang cocok dengan yang dari Koleksi lain .

Dan, seperti biasa, kode dapat ditemukan di GitHub.