የቁልፍ ልዩነት - በጃቫ ከ hashCode ጋር እኩል ነው
እኩልቹ ከ==ኦፕሬተር ጋር ይመሳሰላሉ፣ እሱም የእቃን እኩልነት ሳይሆን የነገር ማንነትን መሞከር ነው። HashCode አንድ ክፍል በክፍል ውስጥ የተከማቸውን መረጃ በተዘዋዋሪ ወይም በግልፅ ወደ አንድ የሃሽ እሴት የሚከፋፍልበት ዘዴ ሲሆን ይህም 32 ቢት የተፈረመ ኢንቲጀር ነው። በጃቫ ውስጥ በእኩል እና በ hashcode መካከል ያለው ቁልፍ ልዩነት እኩልዎቹ ሁለት ነገሮችን ለማነፃፀር ጥቅም ላይ የሚውሉ ሲሆን ሃሽኮድ ደግሞ አንድ ነገር በየትኛው ቡድን መመደብ እንዳለበት ለመወሰን በሃሽንግ ውስጥ ጥቅም ላይ ይውላል።
በጃቫ ምን እኩል ነው?
የእኩል ዘዴው ሁለት ነገሮችን ለማነጻጸር ይጠቅማል።ነባሪው የእኩልነት ዘዴ በነገር ክፍል ውስጥ ይገለጻል። ያ ትግበራ ከ==ኦፕሬተር ጋር ተመሳሳይ ነው። ሁለቱ የነገሮች ማመሳከሪያዎች አንድ አይነት ነገርን የሚያመለክቱ ከሆነ ብቻ ነው. የእኩልነት ዘዴን መሻር ይቻላል።
ምስል 01፡ የጃቫ ፕሮግራም ከ ጋር
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 ክፍል ውስጥ ያሉ እኩልታዎች ተጠርተዋል. እውነት የሚታየው የነገር ማመሳከሪያው ወደ ተመሳሳይ ነገር የሚያመለክት ከሆነ ብቻ ነው።
ምስል 02፡ የጃቫ ፕሮግራም ከተሻረ ጋር እኩል
ከላይ ባለው ፕሮግራም መሰረት የእኩልነት ዘዴው ተሽሯል። አንድ ነገር ወደ ዘዴው ይተላለፋል፣ እና ለተማሪው የተጣለ ዓይነት ነው። ከዚያ የመታወቂያው ዋጋ ምልክት ይደረግበታል። የመታወቂያ እሴቶቹ ተመሳሳይ ከሆኑ፣ ወደ እውነት ይመለሳል። ካልሆነ በውሸት ይመለሳል። የs1 እና s2 መታወቂያዎች ተመሳሳይ ናቸው። ስለዚህ, እውነት ያትማል. የs1 እና s3 መታወቂያዎችም ተመሳሳይ ናቸው፣ ስለዚህ እውነት ያትማል።
በጃቫ ውስጥ hashcode ምንድን ነው?
አንድ ነገር በየትኛው ቡድን መመደብ እንዳለበት ለመወሰን ሃሽ ኮዱ በሃሽ ውስጥ ጥቅም ላይ ይውላል። የነገሮች ቡድን አንድ አይነት hashcode ማጋራት ይችላል። ትክክለኛ የሃሺንግ ተግባር እቃዎችን ወደ ተለያዩ ቡድኖች በእኩል ማሰራጨት ይችላል።
ትክክለኛው ሃሽኮድ እንደሚከተለው ንብረቶች ሊኖሩት ይችላል።እንደ obj1 እና obj2 ያሉ ሁለት ነገሮች እንዳሉ አስብ። obj1.equals(obj2) እውነት ከሆነ፣ obj1.hashCode() obj2.hashCode() ጋር እኩል ነው። obj1.equals(obj2) ሐሰት ከሆነ፣ obj1.hashCode() ከ obj2.hashCode () ጋር እኩል አለመሆኑ አስፈላጊ አይደለም። ሁለቱ እኩል ያልሆኑ ነገሮች ተመሳሳይ ሃሽ ኮድ ሊኖራቸው ይችላል።
ስእል 03፡ የተማሪ ክፍል እኩል እና ሃሽ ኮድ
ምስል 04፡ ዋና ፕሮግራም
የተማሪው ክፍል የእኩልነት እና የሃሽኮድ ዘዴዎችን ይዟል። በተማሪ ክፍል ውስጥ ያለው የእኩልነት ዘዴ አንድ ነገር ይቀበላል። እቃው ባዶ ከሆነ, በውሸት ይመለሳል.የእቃዎቹ ክፍሎች ተመሳሳይ ካልሆኑ, በውሸት ይመለሳል. የመታወቂያ እሴቶቹ በሁለቱም ነገሮች ላይ ምልክት ይደረግባቸዋል። ተመሳሳይ ከሆኑ, ወደ እውነት ይመለሳል. ያለበለዚያ ሐሰት ይመለሳል።
በዋናው ፕሮግራም s1 እና s2 ነገሮች ተፈጥረዋል። s1.equals(s2) ሲደውሉ የእኩልነት ዘዴው ስለተሻረ እና የሁለቱን ነገሮች መታወቂያ ዋጋ ስለሚያጣራ እውነት ይሆናል። ምንም እንኳን ሁለት ነገሮችን የሚያመለክቱ ቢሆኑም መልሱ እውነት ነው ምክንያቱም የ s1 እና s2 የመታወቂያ ዋጋዎች ተመሳሳይ ናቸው. የs1.equals(s2) እውነት እንደመሆኑ፣ የs1 እና s2 hashCode እኩል መሆን አለበት። የ s1 እና s2 hashcode ማተም ተመሳሳይ እሴት ይሰጣል። የሃሽኮድ ዘዴ እንደ HashMap ካሉ ስብስቦች ጋር መጠቀም ይቻላል።
በጃቫ ውስጥ በእኩል እና በ hashcode መካከል ያለው ልዩነት ምንድነው?
ከሃሽ ኮድ ጋር እኩል ነው በጃቫ |
|
እኩል በጃቫ ውስጥ ከ==ኦፕሬተር ጋር ተመሳሳይነት ያለው ዘዴ ሲሆን እሱም ከቁስ እኩልነት ይልቅ የነገር ማንነትን መሞከር ነው። | hashCode አንድ ክፍል በክፍል ውስጥ የተከማቸውን መረጃ በተዘዋዋሪ ወይም በግልፅ ወደ አንድ ሃሽ እሴት የሚከፋፍልበት ዘዴ ነው። |
አጠቃቀም | |
እኩል ዘዴው ሁለት ነገሮችን ለማነፃፀር ጥቅም ላይ ይውላል። | ዘዴው አንድ ነገር በየትኛው ቡድን ውስጥ መቀመጥ እንዳለበት ለመወሰን በ hashing ውስጥ ጥቅም ላይ ይውላል። |
ማጠቃለያ - በጃቫ ከ hashCode ጋር እኩል ነው
በጃቫ ውስጥ የእኩልነት እና የሃሽኮድ ልዩነት እኩልነት ሁለት ነገሮችን ለማነፃፀር ጥቅም ላይ የሚውል ሲሆን ሃሽኮዱ ደግሞ አንድ ነገር በየትኛው ቡድን መመደብ እንዳለበት ለመወሰን በሃሽንግ ውስጥ ጥቅም ላይ ይውላል።