Try using it in your preferred language.

English

  • English
  • 汉语
  • Español
  • Bahasa Indonesia
  • Português
  • Русский
  • 日本語
  • 한국어
  • Deutsch
  • Français
  • Italiano
  • Türkçe
  • Tiếng Việt
  • ไทย
  • Polski
  • Nederlands
  • हिन्दी
  • Magyar
translation

यह एक AI अनुवादित पोस्ट है।

제이온

equals() vs hashCode()

  • लेखन भाषा: कोरियाई
  • आधार देश: सभी देश country-flag

भाषा चुनें

  • हिन्दी
  • English
  • 汉语
  • Español
  • Bahasa Indonesia
  • Português
  • Русский
  • 日本語
  • 한국어
  • Deutsch
  • Français
  • Italiano
  • Türkçe
  • Tiếng Việt
  • ไทย
  • Polski
  • Nederlands
  • Magyar

durumis AI द्वारा संक्षेपित पाठ

  • equals() एक ऑब्जेक्ट के कंटेंट की तुलना करने के लिए उपयोग किया जाने वाला तरीका है कि क्या वे समान हैं, और hashCode() एक ऑब्जेक्ट का अद्वितीय पूर्णांक मान देता है, और दोनों ऑब्जेक्ट की तुलना करने के लिए उपयोग किया जाता है।
  • हैश डेटा संरचनाओं में, hashCode() का उपयोग कुंजी निर्धारित करने के लिए किया जाता है, इसलिए, equals() और hashCode() को एक साथ ओवरराइड किया जाना चाहिए ताकि समान हैश कोड सुनिश्चित किया जा सके।
  • equals() और hashCode() को एक साथ उपयोग करने से हैश डेटा संरचनाओं में समान ऑब्जेक्ट को कुशलतापूर्वक प्रबंधित करना संभव हो जाता है।

equals()

equals() वस्तु की सामग्री की तुलना करता है कि क्या वे समान हैं। इसे अक्सर समानता तुलना कहा जाता है, और यदि आप equals() को ओवरराइड नहीं करते हैं, तो यह आंतरिक रूप से == के समान है, इसलिए यह समानता तुलना है। इसलिए, यदि आप वस्तुओं की समानता की तुलना सही ढंग से करना चाहते हैं, तो आपको हमेशा equals() का उपयोग करना चाहिए।


public boolean equals(Object obj) { 
    return (this == obj); 


hashCode()

hashCode() जाँच करता है कि क्या दो वस्तुएँ समान हैं। यह == जैसा ही समानता तुलना कार्य करता है, लेकिन hashCode() विधि रनटाइम के दौरान एक वस्तु के अद्वितीय पूर्णांक मान को वापस करती है। आम तौर पर, यह हीप में संग्रहीत वस्तु के मेमोरी पते को वापस करता है।



इस पद्धति में native कीवर्ड संलग्न है, जिसका अर्थ है कि यह उन भाषाओं के लिए उपयोग किया जाता है जो Java से अलग भाषाओं में विकसित की जाती हैं और Java में उपयोग की जाती हैं।


हैश क्या है?

हैशिंग एक चर-आकार के इनपुट मान से एक निश्चित आकार के आउटपुट मान को बनाने की प्रक्रिया है, जो एक हैश फ़ंक्शन का उपयोग करता है। हैशिंग के माध्यम से प्राप्त मान को हैश कोड कहा जाता है।


equals() और hashCode()

चूँकि एक ही वस्तु का एक ही मेमोरी पता होना चाहिए, यह स्पष्ट है कि एक ही वस्तु का एक ही हैश कोड होना चाहिए। इसलिए, equals() के अलावा, hashCode() को भी ओवरराइड करना उचित है ताकि कोड को समान हैश कोड प्रदान किया जा सके।


हैश डेटा संरचना

public class Main {

    public static void main(String[] args) throws IOException {
        Set people = new HashSet<>();

        people.add(new Person("제이온", 23));
        people.add(new Person("제이온", 23));
        System.out.println(people.size()); // 2
    }
}

class Person {

    private final String name;

    private final int age;

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    @Override
    public boolean equals(Object o) {

        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Person person = (Person) o;
        return age == person.age && Objects.equals(name, person.name);
    }


ऊपर की तरह, आइए समान वस्तुओं के 2 टुकड़ों को HashSet डेटा संरचना में डालते हैं। यदि हम सेट का आकार आउटपुट करते हैं, तो यह 2 होगा। ऐसा क्यों है?


यह है क्योंकि हैश-आधारित डेटा संरचना कुंजी का निर्धारण करने के लिए hashCode() का उपयोग करती है। दूसरे शब्दों में, वस्तुओं की समानता की तुलना करने से पहले, यह जाँच करता है कि क्या दो वस्तुओं के हैश कोड समान हैं, और फिर निर्धारित करता है कि क्या दो वस्तुएँ समान हैं। इस मामले में, यदि hashCode() को ओवरराइड नहीं किया जाता है, तो यह Object के hashCode() का उपयोग करता है, इसलिए यह प्रत्येक वस्तु के लिए मेमोरी पते को वापस करता है। इसलिए, हैश डेटा संरचना का उपयोग करते समय, equals() के अलावा hashCode() को भी ओवरराइड करना अच्छा होता है।


public static void main(String[] args) throws IOException {
        Set people = new HashSet<>();

        people.add(new Person("제이온", 23));
        people.add(new Person("제이온", 23));
        System.out.println(people.size()); // 1
    }
}

class Person {

    private final String name;

    private final int age;

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    @Override
    public boolean equals(Object o) {

        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Person person = (Person) o;
        return age == person.age && Objects.equals(name, person.name);
    }

    @Override
    public int hashCode() {
        return Objects.hash(name, age);
    }


स्रोत


अपेक्षित साक्षात्कार प्रश्न और उत्तर

equals() और hashCode() का एक साथ उपयोग क्यों किया जाता है?

हैश-आधारित डेटा संरचना कुंजी का निर्धारण करने के लिए hashCode() का उपयोग करती है। दूसरे शब्दों में, वस्तुओं की समानता की तुलना करने से पहले, यह जाँच करता है कि क्या दो वस्तुओं के हैश कोड समान हैं, और फिर निर्धारित करता है कि क्या दो वस्तुएँ समान हैं। इस मामले में, यदि hashCode() को ओवरराइड नहीं किया जाता है, तो यह Object के hashCode() का उपयोग करता है, इसलिए यह प्रत्येक वस्तु के लिए मेमोरी पते को वापस करता है। इसलिए, हैश डेटा संरचना का उपयोग करते समय, equals() के अलावा hashCode() को भी ओवरराइड करना अच्छा होता है।

제이온
제이온
제이온
제이온
[इफ़ेक्टिव जावा] आइटम 6. अनावश्यक ऑब्जेक्ट निर्माण से बचें जावा में अनावश्यक ऑब्जेक्ट निर्माण को कम करके प्रदर्शन को बेहतर बनाने के तरीकों के बारे में बताता है। स्ट्रिंग, बूलियन, रेगुलर एक्सप्रेशन, व्यू ऑब्जेक्ट, ऑटो बॉक्सिंग जैसे विभिन्न उदाहरणों के साथ ऑब्जेक्ट पुन: उपयोग के महत्व पर जोर दिया गया है। खासकर रक्ष

28 अप्रैल 2024

[जावा] सिंक्रोनाइज़्ड कलेक्शन बनाम कनकरेंट कलेक्शन जावा में सिंक्रोनाइज़्ड कलेक्शन (वेक्टर, हैशटेबल, कलेक्शन्स.सिंक्रोनाइज़्डXXX) मल्टीथ्रेडेड वातावरण में समवर्तीता की गारंटी देते हैं, लेकिन प्रदर्शन में गिरावट और कई ऑपरेशनों को एक साथ उपयोग करते समय समस्याएँ हो सकती हैं। वैकल्पिक रूप से, java.util.concur

25 अप्रैल 2024

Java Collections Framework (JCF) क्या है? - JCF की परिभाषा और विशेषताएं (JAVA) Java Collections Framework (JCF) जावा क्लास का एक संग्रह है जो डेटा को कुशलतापूर्वक संसाधित करने के लिए एक मानकीकृत तरीका प्रदान करता है। JCF डेटा स्टोरेज संरचनाओं और एल्गोरिदम को क्लास के रूप में लागू करता है, जिससे कोड पुन: उपयोग क्षमता, प्रदर्शन में वृ

27 अप्रैल 2024

[Javascript] ऑब्जेक्ट की संरचना (V8) JavaScript का Object V8 इंजन में स्थिति के अनुसार संरचना की तरह अनुकूलित Fast मोड और हैशमैप में काम करने वाले Dictionary मोड में परिवर्तित हो जाता है। Fast मोड लगभग स्थिर रूप में कुंजी और मान के साथ तेज़ होता है, लेकिन, नए कुंजी जोड़े जाने या तत्वों को हट
곽경직
곽경직
곽경직
곽경직
곽경직

18 मार्च 2024

निवेश विश्लेषण क्षमता में सुधार के लिए, 3 छोटी लेकिन महत्वपूर्ण आदतें निवेश विश्लेषण करते समय दूसरों के डेटा को बिना आलोचना के न स्वीकार करें, बल्कि सीधे डेटा की जांच करें और डेटा को संख्यात्मक रूप से याद रखने की आदत डालें। इससे आपको सटीक विश्लेषण और निवेश रणनीति तैयार करने में मदद मिलेगी।
고집스런가치투자
고집스런가치투자
고집스런가치투자
고집스런가치투자

3 अप्रैल 2024

[गैर-प्रमुख, डेवलपर के रूप में जीवित रहना] 14. नौसिखिए डेवलपर द्वारा अक्सर पूछे जाने वाले तकनीकी साक्षात्कार सामग्री का सारांश नौसिखिए डेवलपर के लिए तकनीकी साक्षात्कार की तैयारी के लिए एक मार्गदर्शिका। मुख्य मेमोरी क्षेत्र, डेटा संरचना, RDBMS और NoSQL, प्रक्रियात्मक और ऑब्जेक्ट-ओरिएंटेड, ओवरराइडिंग और ओवरलोडिंग, पेज रिप्लेसमेंट एल्गोरिदम, प्रक्रिया और थ्रेड, OSI 7 लेयर, TCP और UD
투잡뛰는 개발 노동자
투잡뛰는 개발 노동자
투잡뛰는 개발 노동자
투잡뛰는 개발 노동자

3 अप्रैल 2024

संवेदी डेटा मॉडलिंग संवेदी डेटा मॉडलिंग इकाइयों को अलग करने और इकाइयों के बीच के संबंधों को ERD के रूप में प्रदर्शित करने की प्रक्रिया है। एक इकाई एक स्वतंत्र सूचना इकाई है, और एक विशेषता एक इकाई द्वारा धारित डेटा है। पहचानकर्ता एक इकाई की विशिष्ट पहचान करता है, और संबंध इका
제이의 블로그
제이의 블로그
제이의 블로그
제이의 블로그

8 अप्रैल 2024

JWT (JSON Web Token) क्या है? JSON Web Token (JWT) एक खुला मानक है जो जानकारी को सुरक्षित रूप से भेजने के लिए उपयोग किया जाता है। यह हस्ताक्षरित टोकन के माध्यम से जानकारी की अखंडता और सुरक्षा सुनिश्चित करता है। हेडर में टोकन का प्रकार और हस्ताक्षर एल्गोरिथम होता है, जबकि पेलोड में डेव
Seize the day
Seize the day
Seize the day
Seize the day
Seize the day

4 मार्च 2024

रस्ट कैसे समवर्ती बग को रोकता है रस्ट एक शक्तिशाली भाषा है जो समवर्ती प्रोग्रामिंग की चुनौतियों का समाधान करती है। इसके टाइप सिस्टम और ओनरशिप मॉडल के कारण थ्रेड के बीच डेटा ट्रांसफर और शेयरिंग सुरक्षित है। म्यूटेक्स, चैनल, एटॉमिक जैसे आंतरिक परिवर्तनशीलता पैटर्न का उपयोग करके साझा चर को
곽경직
곽경직
곽경직
곽경직
곽경직

28 मार्च 2024