Java'da eşittir ve hashCode arasındaki fark

İçindekiler:

Java'da eşittir ve hashCode arasındaki fark
Java'da eşittir ve hashCode arasındaki fark

Video: Java'da eşittir ve hashCode arasındaki fark

Video: Java'da eşittir ve hashCode arasındaki fark
Video: Java - Equals & HashCode methods - internal working details 2024, Kasım
Anonim

Anahtar Farkı – Java'da hashCode'a eşittir

Eşittir, nesne eşitliği yerine nesne kimliğini test eden==operatörüne benzer. hashCode, bir sınıfın, sınıfın bir örneğinde depolanan verileri, 32 bit işaretli bir tamsayı olan tek bir karma değere örtük veya açık bir şekilde böldüğü bir yöntemdir. Java'da equals ve hashCode arasındaki temel fark, equals'in iki nesneyi karşılaştırmak için kullanılması, hashCode'un ise bir nesnenin hangi gruba kategorize edilmesi gerektiğine karar vermek için kullanılmasıdır.

Java'da eşittir nedir?

Eşittir yöntemi iki nesneyi karşılaştırmak için kullanılır. Varsayılan eşittir yöntemi, nesne sınıfında tanımlanır. Bu uygulama,==operatörüne benzer. İki nesne başvurusu, yalnızca aynı nesneye işaret ediyorsa eşittir. Eşittir yöntemini geçersiz kılmak mümkündür.

Java'da eşittir ve hashCode Arasındaki Fark
Java'da eşittir ve hashCode Arasındaki Fark

Şekil 01: eşittir ile Java Programı

System.out.println(s1.equals(s2)) ifadesi, s1 ve s2 iki farklı nesneye atıfta bulunduğundan, yanıtı yanlış verecektir. System.out.println(s1==s2); ifadesine benziyordu.

System.out.println(s1.equals(s3)) ifadesi, cevabı doğru verecektir çünkü s1 ve s3 aynı nesneye atıfta bulunur. System.out.println(s1==s3); ifadesine benziyordu

Öğrenci sınıfında eşittir yöntemi yoktur. Bu nedenle, Object sınıfındaki eşittir denir. True yalnızca nesne başvurusu aynı nesneye işaret ediyorsa görüntülenir.

Java_Şekil 02'de eşittir ve hashCode arasındaki fark
Java_Şekil 02'de eşittir ve hashCode arasındaki fark

Şekil 02: Geçersiz Kılınmış Java Programı eşittir

Yukarıdaki programa göre, eşittir yöntemi geçersiz kılınır. Yönteme bir nesne iletilir ve tür, Student'a dönüştürülür. Ardından id değerleri kontrol edilir. Kimlik değerleri benzerse, true değerini döndürür. Değilse, false döndürür. s1 ve s2 kimlikleri benzerdir. Yani, doğru yazdıracaktır. s1 ve s3 kimlikleri de benzerdir, bu nedenle true yazdırılır.

Java'da hashCode nedir?

HashCode, bir nesnenin hangi gruba kategorize edileceğine karar vermek için hashing'de kullanılır. Bir grup nesne aynı hashCode'u paylaşabilir. Doğru bir karma işlevi, nesneleri farklı gruplara eşit olarak dağıtabilir.

Doğru bir hashCode aşağıdaki gibi özelliklere sahip olabilir.obj1 ve obj2 olarak iki nesne olduğunu varsayalım. obj1.equals(obj2) doğruysa, obj1.hashCode(), obj2.hashCode()'a eşittir. obj1.equals(obj2) false ise, obj1.hashCode() öğesinin obj2.hashCode() ile eşit olmaması gerekli değildir. Eşit olmayan iki nesne de aynı hashCode'a sahip olabilir.

Java_Şekil 03'te eşittir ve hashCode arasındaki fark
Java_Şekil 03'te eşittir ve hashCode arasındaki fark

Şekil 03: equals ve hashCode ile öğrenci sınıfı

Java'da eşittir ve hashCode Arasındaki Temel Fark
Java'da eşittir ve hashCode Arasındaki Temel Fark

Şekil 04: Ana Program

Öğrenci sınıfı, equals ve hashCode yöntemlerini içerir. Student sınıfındaki equals yöntemi bir nesne alacaktır. Nesne null ise false döndürür. Nesnelerin sınıfları aynı değilse, false döndürür. Kimlik değerleri her iki nesnede de kontrol edilir. Eğer benzerlerse, true dönecektir. Aksi takdirde false döndürür.

Ana programda, s1 ve s2 nesneleri oluşturulur. s1.equals(s2) çağrılırken, equals yöntemi geçersiz kılındığından ve iki nesnenin id değerlerini kontrol ettiğinden true verir. İki nesneye atıfta bulunmalarına rağmen, cevap doğrudur çünkü s1 ve s2'nin id değerleri aynıdır. s1.equals(s2) doğru olduğundan, s1 ve s2'nin hashCode'u eşit olmalıdır. s1 ve s2'nin hashCode'unu yazdırmak aynı değeri verir. hashCode yöntemi, HashMap. gibi Koleksiyonlarla kullanılabilir.

Java'da equals ve hashCode arasındaki fark nedir?

equals vs hashCode Java

equals, Java'da nesne eşitliği yerine nesne kimliğini test eden==operatörüne benzer şekilde çalışan bir yöntemdir. hashCode, bir sınıfın, sınıfın bir örneğinde depolanan verileri açık veya örtülü olarak tek bir karma değere böldüğü bir yöntemdir.
Kullanım
Yöntem eşittir iki nesneyi karşılaştırmak için kullanılır. Yöntem, bir nesnenin hangi gruba yerleştirileceğine karar vermek için karma oluşturmada kullanılır.

Özet – Java'da hashCode'a eşittir

Java'da equals ve hashCode arasındaki fark, equals öğesinin iki nesneyi karşılaştırmak için kullanılması, hashCode'un ise bir nesnenin hangi gruba kategorize edilmesi gerektiğine karar vermek için hashing'de kullanılmasıdır.

Önerilen: