Perbezaan Utama – sama dengan Kod cincang dalam Java
Persamaan adalah serupa dengan operator==, iaitu untuk menguji identiti objek dan bukannya kesamaan objek. Kod hash ialah kaedah yang mana kelas secara tersirat atau eksplisit memecahkan data yang disimpan dalam contoh kelas kepada satu nilai cincang, iaitu integer bertanda 32 bit. Perbezaan utama antara equals dan hashCode dalam Java ialah equals digunakan untuk membandingkan dua objek manakala hashCode digunakan dalam pencincangan untuk menentukan kumpulan mana objek harus dikategorikan.
Apakah yang sama dalam Java?
Kaedah sama digunakan untuk membandingkan dua objek. Kaedah lalai sama dengan ditakrifkan dalam kelas objek. Pelaksanaan itu serupa dengan pengendali==. Kedua-dua rujukan objek adalah sama hanya jika mereka menunjuk ke objek yang sama. Anda boleh mengatasi kaedah sama.
Rajah 01: Program Java dengan sama
Pernyataan System.out.println(s1.equals(s2)) akan memberikan jawapan palsu kerana s1 dan s2 merujuk kepada dua objek berbeza. Ia serupa dengan pernyataan, System.out.println(s1==s2);
Pernyataan System.out.println(s1.equals(s3)) akan memberikan jawapan yang benar kerana s1 dan s3 merujuk kepada objek yang sama. Ia serupa dengan pernyataan, System.out.println(s1==s3);
Tiada kaedah yang sama dalam kelas Pelajar. Oleh itu, yang sama dalam kelas Objek dipanggil. Benar dipaparkan hanya jika rujukan objek menghala ke objek yang sama.
Rajah 02: Program Java dengan Overridden sama
Mengikut atur cara di atas, kaedah equals ditindih. Objek dihantar ke kaedah, dan ia ditaipkan kepada Pelajar. Kemudian, nilai id disemak. Jika nilai id adalah serupa, ia akan kembali benar. Jika tidak, ia akan kembali palsu. Id bagi s1 dan s2 adalah serupa. Jadi, ia akan dicetak benar. Id s1 dan s3 juga serupa, jadi ia akan dicetak benar.
Apakah hashCode dalam Java?
Kod cincang digunakan dalam pencincangan untuk memutuskan kepada kumpulan mana objek harus dikategorikan. Sekumpulan objek boleh berkongsi hashCode yang sama. Fungsi pencincangan yang betul boleh mengagihkan objek secara sama rata ke dalam kumpulan yang berbeza.
Kod cincang yang betul boleh mempunyai sifat seperti berikut. Andaikan terdapat dua objek sebagai obj1 dan obj2. Jika obj1.equals(obj2) adalah benar, maka obj1.hashCode() adalah sama dengan obj2.hashCode(). Jika obj1.equals(obj2) adalah palsu, ia tidak semestinya obj1.hashCode() tidak sama dengan obj2.hashCode(). Kedua-dua objek yang tidak sama itu mungkin juga mempunyai Kod cincang yang sama.
Rajah 03: Kelas pelajar dengan equals dan hashCode
Rajah 04: Program Utama
Kelas Pelajar mengandungi kaedah equals dan hashCode. Kaedah sama dalam kelas Pelajar akan menerima objek. Jika objek adalah nol, ia akan kembali palsu. Jika kelas objek tidak sama, ia akan kembali palsu. Nilai id disemak dalam kedua-dua objek. Jika mereka serupa, ia akan kembali benar. Jika tidak, ia akan kembali palsu.
Dalam program utama, objek s1 dan s2 dicipta. Apabila memanggil s1.equals(s2) akan memberikan true kerana kaedah equals ditindih dan ia menyemak nilai id kedua-dua objek. Walaupun mereka merujuk kepada dua objek, jawapannya adalah benar kerana nilai id s1 dan s2 adalah sama. Oleh kerana s1.equals(s2) adalah benar, kod cincang s1 dan s2 hendaklah sama. Mencetak kod cincang s1 dan s2 memberikan nilai yang sama. Kaedah hashCode boleh digunakan dengan Koleksi seperti HashMap.
Apakah Perbezaan Antara equals dan hashCode dalam Java?
equals vs hashCode dalam Java |
|
equals ialah kaedah dalam Java yang bertindak serupa dengan operator==, iaitu untuk menguji identiti objek dan bukannya kesamaan objek. | hashCode ialah kaedah yang menggunakan kelas secara tersirat atau eksplisit memecahkan data yang disimpan dalam tika kelas kepada satu nilai cincang. |
Penggunaan | |
Kaedah sama digunakan untuk membandingkan dua objek. | Kaedah digunakan dalam pencincangan untuk menentukan kumpulan mana objek harus diletakkan. |
Ringkasan – sama dengan Kod cincang dalam Java
Perbezaan dalam equals dan hashCode dalam Java ialah equals digunakan untuk membandingkan dua objek manakala hashCode digunakan dalam pencincangan untuk menentukan kumpulan mana objek harus dikategorikan.