Perbandingan Objek dalam ArrayList: Bagaimana mengandungi() Menentukan Kesamaan Objek
Apabila menambahkan objek pada ArrayList, selalunya diandaikan bahawa mengandungi () kaedah akan menilai objek berdasarkan nilai medannya sahaja. Walau bagaimanapun, proses sebenar adalah lebih bernuansa daripada itu.
Dalam Java, antara muka Senarai, yang ArrayList laksanakan, mentakrifkan tandatangan kaedah contains(). Menurut dokumentasi, kaedah "kembali benar jika dan hanya jika senarai ini mengandungi elemen yang ditentukan." Tetapi bagaimanakah senarai menentukan sama ada dua objek adalah sama?
Peranan equals()
Jawapannya terletak pada kaedah equals() , yang ditakrifkan dalam kelas Objek. Kaedah ini bertanggungjawab untuk membandingkan dua objek dan menentukan sama ada ia mewakili nilai yang sama. Apabila kaedah contains() dipanggil, ia secara dalaman memanggil kaedah equals() untuk menentukan sama ada objek yang ditentukan sepadan dengan mana-mana objek dalam senarai.
Custom equals() untuk Custom Objects
Dalam contoh khusus anda, anda mentakrifkan kaedah equals() tersuai dalam kelas Thing. Ini adalah perlu kerana secara lalai, kaedah equals() yang disediakan oleh Object membandingkan rujukan objek, bukan nilai medan. Pelaksanaan anda membandingkan medan nilai dengan betul untuk menentukan sama ada dua objek Thing adalah sama.
Dengan mengandaikan bahawa kelas Thing dilaksanakan seperti yang ditunjukkan, kaedah contains() sememangnya akan kembali benar apabila mencari objek yang serupa kepada yang telah ditambahkan pada senarai bakul sebelum ini. Ini kerana kaedah equals() kembali benar apabila medan nilai bagi dua objek sepadan.
Kesimpulan
Ringkasnya, kaedah ArrayList contains() menggunakan kaedah equals() untuk menentukan sama ada dua objek adalah sama. Untuk kelas objek tersuai, anda mungkin perlu mengatasi kaedah equals() untuk menyediakan pelaksanaan anda sendiri berdasarkan sifat khusus yang mentakrifkan kesamaan untuk objek anda.
Atas ialah kandungan terperinci Bagaimanakah Kaedah `contains()` ArrayList Menentukan Kesamaan Objek?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!