तो मैं hashCode() और बराबरी() विधि पर एक सवाल हैhashCode() और बराबरी() विधि
चलो कहते हैं कि मैं सिर्फ overridng एक बहुत ही बुनियादी प्रोग्राम लिखने दोनों ही methodes
import java.util.*;
class Employee
{
private String name;
private int empid;
public Employee(String name,int empid)
{
this.name=name;
this.empid=empid;
}
public int getEmpid()
{
return empid;
}
public String getName()
{
return name;
}
public boolean equals(Object obj)
{
System.out.println("equals has just been called...");
Employee e1=(Employee)obj;
return ((name.equals(e1.name)) && (empid==e1.empid));
}
public int hashCode()
{
System.out.println("hashcode called...");
return empid;
}
}
फिर , मान लीजिए कि मैं HashSet
class Five
{
public static void main(String args[])
{
HashSet hs1=new HashSet();
hs1.add(new Employee("Alex",25));
hs1.add(new Employee("Peter",25));
hs1.add(new Employee("Martin",25));
hs1.add(new Employee("Alex",25));
Iterator itr=hs1.iterator();
while(itr.hasNext())
{
Employee e=(Employee)itr.next();
System.out.println(e.getEmpid()+"\t"+e.getName());
}
}
}
में जोड़ सकते हैं और तत्वों पुनरावृत्ति करने के लिए एक और वर्ग बारे में अब सवाल है जब मैं एलेक्स फिर से जोड़ने के लिए के साथ एक ही बराबर empid (कोशिश) कैलोरी जाने हमेशा तुमको बार
नेतृत्व के रूप में वहाँ कोई सूचकांक n hashmap मामले में अगर यह पहले जाँच की जानी तो साथ पहले से यह सच वापस आ जाएगी और अन्य दो तत्वों (पीटर और मार्टिन) का आह्वान नहीं किया जाना चाहिए, लेकिन हमेशा कहा जाता बराबर एलेक्स जोड़ा है 3 बार
क्यों .. ??
एक ही बाल्टी के भीतर वस्तुओं को इंडेक्स भी है .. ??
मैं हैशसेट स्रोत कोड पर एक नज़र डालेगा। स्मृति से यह वास्तव में एक नक्शा में शामिल करता है तो मैं indexOf संदेह है और बराबरी कि – RNJ
अंकुर Lathi- nopss मेरी कुए में कई बार उपयोग किया जाता है अलग है – sandiee