vì vậy tôi có một câu hỏi về phương pháp hashcode() và equals()hashcode() và equals() phương pháp
Hãy nói rằng tôi chỉ cần viết một chương trình rất cơ bản overridng cả 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;
}
}
Sau đó, , giả sử tôi viết lớp khác để thêm và lặp các yếu tố trong 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());
}
}
}
bây giờ câu hỏi là khi tôi cố gắng thêm Alex một lần nữa với cùng empID equals() luôn cal dẫn đến thời điểm
vì không có chỉ mục n hashmap vì vậy nếu lần đầu tiên được kiểm tra bằng Alex trước đó, nó sẽ trả về true và không được gọi cho hai phần tử khác (peter và martin) . 3 lần
lý do tại sao .. ??
là các đối tượng trong cùng một nhóm cũng có chỉ mục .. ??
Tôi sẽ xem xét mã nguồn HashSet. Từ bộ nhớ nó thực sự thêm nó vào một bản đồ vì vậy tôi nghi ngờ indexOf và bằng được sử dụng nhiều lần trong đó – RNJ
ankur Lathi- nopss que của tôi là khác nhau – sandiee