Прежде всего, добавьте элемент в HashSet и напечатайте размер HashSet, который возвращается как ожидалось. но я изменил одно из значений объекта и снова сохранил его в HashSet и удалил объект с использованием имени объекта. но все же я получаю тот же размер, что и предыдущий. Мой код в соответствии с:Удалить элемент из HashSet
public class Test {
private String s;
public Test(String s){
this.s = s ;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
HashSet<Object> hs = new HashSet<Object>();
Test t1 = new Test("Keval");
Test t2 = new Test("Keval");
String s1 = new String("Keval");
hs.add(t1);
hs.add(t2);
hs.add(s1);
System.out.println("Set Size :: " + hs.size());
s1 = new String("Demo");
hs.remove(s1);
System.out.println("Set Size :: " + hs.size());
}
}
Вывод выше код:
Set Size :: 3
Set Size :: 3 // Why it prints 3 insted of 2???
Подсказка: '' Keval "! =" Demo "' – TheLostMind
Не то, чтобы он отвечал на ваш вопрос, но вы должны реализовать методы 'hashcode' и' equals' в вашем классе 'Test', если вы хотите использовать их в структуре хэша, например HashSet. – Pshemo
Значение s1 было изменено до 'hs.remove (s1);' statement – Rupesh