Kaedah equals(Object) dan kaedah hashCode() dalam Java ialah dua kaedah penting yang digunakan untuk membandingkan kesamaan objek. Terdapat hubungan rapat dan saling bergantung antara mereka, dan mereka memainkan peranan penting dalam pembangunan sebenar.
Pertama, mari analisa peranan kaedah sama (Objek). Kaedah equals(Object) ialah kaedah yang ditakrifkan dalam kelas Object, dan semua kelas Java mewarisi daripada kelas Object. Kaedah equals(Object) digunakan untuk membandingkan sama ada dua objek adalah sama Pelaksanaan lalainya adalah untuk membandingkan alamat memori objek. Jika kaedah equals(Object) tidak ditindih, rujukan objek akan dibandingkan.
Namun, untuk kebanyakan kes, kita perlu membandingkan mengikut kandungan sebenar objek. Sebagai contoh, kami mentakrifkan kelas Orang, yang mengandungi dua atribut: nama dan umur. Kami mahu dua objek Orang dianggap sama apabila nama dan umur mereka adalah sama. Pada masa ini, anda perlu menulis semula kaedah equals(Object) dan menyesuaikan peraturan perbandingan mengikut keperluan.
Apabila mengatasi kaedah equals(Object), anda perlu mengikut prinsip berikut:
Perlu diingatkan bahawa menulis semula kaedah equals(Object) juga memerlukan penulisan semula kaedah hashCode() untuk memastikan ketekalan kaedah hashCode(). Kaedah hashCode() mengembalikan kod cincang objek, yang merupakan nilai jenis int. Kod cincang objek dikira oleh algoritma tertentu daripada nilai atribut objek. Kaedah hashCode() mempunyai banyak kegunaan dalam Java, seperti dalam kelas koleksi untuk meningkatkan kecekapan carian.
Keperluan ketekalan kaedah hashCode() dan keperluan ketekalan kaedah equals(Objek) adalah saling bergantung. Jika dua objek memanggil kaedah equals(Object) dan mengembalikan true, maka kaedah hashCode() mereka mesti mengembalikan nilai yang sama. Dalam erti kata lain, jika dua objek adalah sama, maka kod cincang mereka mestilah sama. Oleh itu, apabila mengatasi kaedah equals(Object), anda juga perlu mengatasi kaedah hashCode().
Mengatasi kaedah hashCode() mengikut prinsip berikut:
Dalam pembangunan sebenar, kami boleh menggunakan alat IDE untuk menjana kod yang ditulis semula secara automatik untuk kaedah equals(Object) dan kaedah hashCode() untuk meningkatkan kecekapan pembangunan. Pada masa yang sama, kami juga boleh menggunakan kelas alat seperti EqualsBuilder dan HashCodeBuilder dalam Apache Commons Lang untuk memudahkan proses penulisan semula.
Ringkasnya, kaedah equals(Object) dan kaedah hashCode() ialah dua kaedah penting untuk perbandingan objek dan pengiraan kod cincang dalam Java. Terdapat hubungan rapat dan saling bergantung antara mereka, dan mereka memainkan peranan penting dalam pembangunan sebenar. Apabila mengatasi kaedah equals(Object), anda perlu mengatasi kaedah hashCode() pada masa yang sama untuk memastikan konsistensi dan prestasi. Dengan memahami dan menggunakan kedua-dua kaedah ini dengan betul, kita boleh melakukan perbandingan objek dan operasi set dengan lebih baik.
Atas ialah kandungan terperinci Hubungan dan penggunaan kaedah equals(Object) dan kaedah hashCode() dalam Java. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!