Հավասարության և hashCode-ի միջև տարբերությունը Java-ում

Բովանդակություն:

Հավասարության և hashCode-ի միջև տարբերությունը Java-ում
Հավասարության և hashCode-ի միջև տարբերությունը Java-ում

Video: Հավասարության և hashCode-ի միջև տարբերությունը Java-ում

Video: Հավասարության և hashCode-ի միջև տարբերությունը Java-ում
Video: Հավասարության և խտրականության չենթարկվելու իրավունք | Անահիտ Չիլինգարյան 2024, Նոյեմբեր
Anonim

Բանալին տարբերություն – հավասար է ընդդեմ հաշկոդի Java-ում

Հավասարը նման է==օպերատորին, որը պետք է փորձարկի օբյեկտի նույնականությունը, այլ ոչ թե օբյեկտի հավասարությունը: HashCode-ը մեթոդ է, որով դասը անուղղակիորեն կամ բացահայտորեն բաժանում է դասի օրինակում պահվող տվյալները մեկ հեշ արժեքի, որը 32 բիթ ստորագրված ամբողջ թիվ է: Java-ում հավասարների և hashCode-ի հիմնական տարբերությունն այն է, որ հավասարներն օգտագործվում են երկու օբյեկտ համեմատելու համար, մինչդեռ hashCode-ն օգտագործվում է հեշինգում որոշելու համար, թե օբյեկտը որ խմբին պետք է դասակարգել:

Ի՞նչ է հավասար Java-ում:

Հավասարության մեթոդն օգտագործվում է երկու օբյեկտ համեմատելու համար:Նախնական հավասարման մեթոդը սահմանվում է օբյեկտի դասում: Այդ իրականացումը նման է==օպերատորին: Երկու օբյեկտի հղումները հավասար են միայն այն դեպքում, եթե դրանք մատնանշում են նույն օբյեկտը: Հնարավոր է վերացնել հավասարումների մեթոդը:

Java-ում հավասարների և hashCode-ի միջև տարբերությունը
Java-ում հավասարների և hashCode-ի միջև տարբերությունը

Նկար 01. Java ծրագիր հավասար է

System.out.println(s1.equals(s2)) պնդումը կտա սխալ պատասխանը, քանի որ s1-ը և s2-ը վերաբերում են երկու տարբեր օբյեկտների: Այն նման էր System.out.println(s1==s2); հայտարարությանը:

System.out.println(s1.equals(s3)) պնդումը կտա ճիշտ պատասխանը, քանի որ s1-ը և s3-ը վերաբերում են նույն օբյեկտին: Դա նման էր System.out.println(s1==s3); հայտարարությանը

Ուսանող դասարանում հավասարների մեթոդ չկա: Հետևաբար, Object դասի հավասարները կոչվում են: True-ն ցուցադրվում է միայն այն դեպքում, եթե օբյեկտի հղումը մատնանշում է նույն օբյեկտը:

Java_Figure 02-ում հավասարների և hashCode-ի միջև տարբերությունը
Java_Figure 02-ում հավասարների և hashCode-ի միջև տարբերությունը

Գծապատկեր 02. Ջավա ծրագիր՝ Overrided-ով հավասար է

Ըստ վերոնշյալ ծրագրի՝ հավասարեցման մեթոդը վերացված է։ Օբյեկտը փոխանցվում է մեթոդին և այն ձևակերպվում է Student-ին: Այնուհետև ստուգվում են id արժեքները: Եթե id արժեքները նման են, այն կվերադարձնի true: Եթե ոչ, այն կվերադառնա կեղծ: s1-ի և s2-ի ID-ները նման են: Այսպիսով, այն կտպվի ճշմարիտ: s1-ի և s3-ի ID-ները նույնպես նման են, ուստի այն կտպվի true:

Ի՞նչ է hashCode-ը Java-ում:

Հաշկոդն օգտագործվում է հեշինգում որոշելու համար, թե օբյեկտը որ խմբին պետք է դասակարգել: Օբյեկտների խումբը կարող է կիսել նույն հեշԿոդը: Ճիշտ հեշինգ ֆունկցիան կարող է հավասարաչափ բաշխել օբյեկտները տարբեր խմբերի:

Ճիշտ հեշԿոդը կարող է ունենալ հետևյալ հատկությունները. Ենթադրենք, որ կան երկու օբյեկտներ՝ obj1 և obj2: Եթե obj1.equals(obj2)-ը ճշմարիտ է, ապա obj1.hashCode()-ը հավասար է obj2.hashCode(): Եթե obj1.equals(obj2)-ը կեղծ է, ապա պարտադիր չէ, որ obj1.hashCode()-ը հավասար չէ obj2.hashCode(-ին): Երկու անհավասար օբյեկտները նույնպես կարող են ունենալ նույն հեշԿոդը։

Java_Figure 03-ում հավասարների և hashCode-ի միջև տարբերությունը
Java_Figure 03-ում հավասարների և hashCode-ի միջև տարբերությունը

Գծապատկեր 03. Ուսանողների դասարան հավասարներով և hashCode

Հիմնական տարբերությունը հավասարների և hashCode-ի միջև Java-ում
Հիմնական տարբերությունը հավասարների և hashCode-ի միջև Java-ում

Նկար 04. Հիմնական ծրագիր

Ուսանող դասը պարունակում է հավասարների և hashCode մեթոդները: Student դասի հավասար մեթոդը կստանա օբյեկտ: Եթե օբյեկտը null է, այն կվերադարձնի false:Եթե օբյեկտների դասերը նույնը չեն, այն կվերադարձնի false: id արժեքները ստուգվում են երկու օբյեկտներում: Եթե դրանք նման են, ապա այն կվերադառնա իրական: Հակառակ դեպքում այն կվերադարձնի կեղծ:

Հիմնական ծրագրում ստեղծվում են s1 և s2 օբյեկտները։ S1-ը կանչելիս.equals(s2)-ը կտա true, քանի որ հավասարների մեթոդը վերացված է և ստուգում է երկու օբյեկտների id արժեքները: Թեև դրանք վերաբերում են երկու օբյեկտի, պատասխանը ճշմարիտ է, քանի որ s1 և s2 id արժեքները նույնն են: Քանի որ s1.equals(s2)-ը ճշմարիտ է, s1-ի և s2-ի hashCode-ը պետք է հավասար լինի: s1-ի և s2-ի hashCode-ի տպումը տալիս է նույն արժեքը: HashCode մեթոդը կարող է օգտագործվել այնպիսի հավաքածուների հետ, ինչպիսին է HashMap-ը:

Ո՞րն է տարբերությունը հավասարների և hashCode-ի միջև Java-ում:

հավասար է ընդդեմ hashCode Java-ում

equals-ը Java-ում մեթոդ է, որը գործում է նման==օպերատորի, որը պետք է փորձարկի օբյեկտի նույնականությունը, այլ ոչ թե օբյեկտի հավասարությունը: hashCode-ը մեթոդ է, որով դասը անուղղակիորեն կամ բացահայտորեն բաժանում է դասի օրինակում պահվող տվյալները մեկ հեշ արժեքի:
Օգտագործում
Հավասարության մեթոդն օգտագործվում է երկու օբյեկտ համեմատելու համար: Մեթոդն օգտագործվում է հեշինգում որոշելու համար, թե որ խմբի մեջ պետք է տեղադրվի օբյեկտը:

Ամփոփում – հավասար է ընդդեմ hashCode-ի Java-ում

Հավասարների և hashCode-ի տարբերությունը Java-ում այն է, որ հավասարներն օգտագործվում են երկու օբյեկտ համեմատելու համար, մինչդեռ hashCode-ն օգտագործվում է հեշինգում որոշելու համար, թե օբյեկտը որ խմբին պետք է դասակարգել:

Խորհուրդ ենք տալիս: