HashSetに2つの異なるオブジェクト(変更可能)を追加した後、setterを呼び出してオブジェクトの値を変更すると(同じにする)、サイズはhashSetの2になりますSetを作成した後にHashsetを作成するオブジェクトが同じになる
私は同じ理由を理解することはできませんよ。
public static void main(String[] args) {
Employee e = new Employee();
e.setName("Amit");
Employee e1 = new Employee();
e1.setName("Jitender");
Set<Person> hashSet = new HashSet<Person>();
hashSet.add(e);
hashSet.add(e1);
// size of set is >>2
System.out.println("size of set is >>" + hashSet.size());
e1.setName("Amit");
// updated size of set is >>2
System.out.println("updated size of set is >>" + hashSet.size());
}
Employeeクラスは次のとおりです。
public class Employee extends Person {
public Employee() {
}
public Employee(String name) {
this.name = name;
}
String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public int hashCode() {
// TODO Auto-generated method stub
return name.hashCode();
}
@Override
public boolean equals(Object obj) {
Employee e = (Employee) obj;
return this.name.equals(e.name);
}
}
もう1つのことを教えてください。「この禁止の特殊なケースは、セットがそれ自身を要素として含むことは許されない」ということです...... ......それは良いアイデアや例外ではないことを意味します(私はそれを追加しようとしましたが、それは例外を与えません) –
それだけで自分自身にセットを加えることは悪い考えです。例外をスローしたりエラーを発生させたりすることはありません。正しく機能しません。 – trutheality
もう一度説明していただき、ありがとうございます。 –