Java-da bərabər və hashCode arasındakı fərq

Mündəricat:

Java-da bərabər və hashCode arasındakı fərq
Java-da bərabər və hashCode arasındakı fərq

Video: Java-da bərabər və hashCode arasındakı fərq

Video: Java-da bərabər və hashCode arasındakı fərq
Video: Bahar AOP həqiqətən necə işləyir [Bahar AOP səyahəti - 2-ci hissə] 2024, Iyul
Anonim

Əsas Fərq – Java-da hashCode ilə bərabərdir

Bərabərlər==operatoruna bənzəyir, o, obyekt bərabərliyini yox, obyektin eyniliyini yoxlamaq üçündür. HashCode, sinifin 32 bitlik işarəli tam ədəd olan bir hash dəyərinə sinif nümunəsində saxlanılan məlumatları açıq şəkildə və ya açıq şəkildə parçaladığı bir üsuldur. Java-da bərabər və hashCode arasındakı əsas fərq ondan ibarətdir ki, bərabərlər iki obyekti müqayisə etmək üçün istifadə olunur, hashCode isə obyektin hansı qrupa təsnif edilməsinə qərar vermək üçün heşinq zamanı istifadə olunur.

Java-da nə bərabərdir?

Bərabər metodu iki obyekti müqayisə etmək üçün istifadə olunur. Default equals metodu obyekt sinfində müəyyən edilmişdir. Bu tətbiq==operatoruna bənzəyir. İki obyekt istinadı yalnız eyni obyektə işarə etdikdə bərabərdir. Bərabər metodu ləğv etmək mümkündür.

Java-da bərabər və hashCode arasındakı fərq
Java-da bərabər və hashCode arasındakı fərq

Şəkil 01: Java proqramı bərabərdir

System.out.println(s1.equals(s2)) ifadəsi yanlış cavab verəcək, çünki s1 və s2 iki fərqli obyektə istinad edir. Bu, System.out.println(s1==s2); ifadəsinə bənzəyirdi.

System.out.println(s1.equals(s3)) ifadəsi doğru cavabı verəcək, çünki s1 və s3 eyni obyektə istinad edir. Bu, System.out.println(s1==s3); ifadəsinə bənzəyirdi.

Tələbə sinfində bərabərlik metodu yoxdur. Buna görə də, Object sinfində bərabərlər çağırılır. True yalnız obyekt istinadı eyni obyektə işarə etdikdə göstərilir.

Java_Şəkil 02-də bərabər və hashCode arasındakı fərq
Java_Şəkil 02-də bərabər və hashCode arasındakı fərq

Şəkil 02: Overridden ilə Java Proqramı bərabərdir

Yuxarıdakı proqrama əsasən, bərabərlik metodu ləğv edilib. Obyekt metoda ötürülür və o, Tələbəyə ötürülür. Sonra id dəyərləri yoxlanılır. İd dəyərləri oxşardırsa, o, doğru qaytaracaq. Əgər yoxsa, false qaytarılacaq. s1 və s2 idləri oxşardır. Beləliklə, doğru çap olunacaq. s1 və s3 id-ləri də oxşardır, ona görə də doğru çap olunacaq.

Java-da hashCode nədir?

Obyektin hansı qrupa təsnif edilməsinə qərar vermək üçün hash-koddan istifadə edilir. Bir qrup obyekt eyni hashCode-u paylaşa bilər. Düzgün hashing funksiyası obyektləri müxtəlif qruplara bərabər paylaya bilər.

Düzgün hashCode aşağıdakı kimi xüsusiyyətlərə malik ola bilər. Tutaq ki, obj1 və obj2 kimi iki obyekt var. Əgər obj1.equals(obj2) doğrudursa, o zaman obj1.hashCode() obj2.hashCode() ilə bərabərdir. Əgər obj1.equals(obj2) yanlışdırsa, obj1.hashCode() funksiyasının obj2.hashCode() ilə bərabər olmaması lazım deyil. İki qeyri-bərabər obyekt də eyni hashCode-a malik ola bilər.

Java_Şəkil 03-də bərabər və hashCode arasındakı fərq
Java_Şəkil 03-də bərabər və hashCode arasındakı fərq

Şəkil 03: Bərabər və hashCode ilə tələbə sinfi

Java-da bərabər və hashCode arasındakı əsas fərq
Java-da bərabər və hashCode arasındakı əsas fərq

Şəkil 04: Əsas Proqram

Tələbə sinfi bərabər və hashCode metodlarını ehtiva edir. Tələbə sinfində bərabər metod obyekti alacaq. Obyekt null olarsa, false qaytaracaq. Obyektlərin sinifləri eyni deyilsə, false qaytaracaq. Hər iki obyektdə id dəyərləri yoxlanılır. Əgər onlar oxşardırsa, həqiqətə qayıdacaq. Əks halda, false qaytarılacaq.

Əsas proqramda s1 və s2 obyektləri yaradılır. s1.equals(s2) çağırarkən doğru olacaq, çünki bərabərlik metodu ləğv edilib və o, iki obyektin id dəyərlərini yoxlayır. Onlar iki obyektə istinad etsələr də, cavab doğrudur, çünki s1 və s2-nin id dəyərləri eynidir. s1.equals(s2) doğru olduğundan, s1 və s2-nin hashCode-u bərabər olmalıdır. s1 və s2-nin hashCode çapı eyni dəyəri verir. HashCode metodu HashMap kimi Kolleksiyalarla istifadə edilə bilər.

Java-da bərabər və hashCode arasındakı fərq nədir?

Java-da hashCode ilə bərabərdir

equals Java-da==operatoruna bənzər bir üsuldur, yəni obyekt bərabərliyini yox, obyekt eyniliyini yoxlamaqdır. hashCode, sinfin dolayısı ilə və ya açıq şəkildə sinfin nümunəsində saxlanılan məlumatları vahid hash dəyərinə bölmək üsuludur.
İstifadə
Bərabər metodu iki obyekti müqayisə etmək üçün istifadə olunur. Obyektin hansı qrupa yerləşdirilməsinə qərar vermək üçün heşinq zamanı metoddan istifadə edilir.

Xülasə – Java-da hashCode ilə bərabərdir

Java-da bərabər və hashCode fərqi ondan ibarətdir ki, bərabərlər iki obyekti müqayisə etmək üçün istifadə olunur, hashCode isə obyektin hansı qrupa təsnif ediləcəyinə qərar vermək üçün heşinq zamanı istifadə olunur.

Tövsiyə: