HashSet hash=new HashSet();
StringBuffer x=new StringBuffer("A");
StringBuffer x2=new StringBuffer("A");
hash.add(x);
hash.add(x2);
System.out.print(hash.size());
Ai turma resultado?
HashSet hash=new HashSet();
StringBuffer x=new StringBuffer("A");
StringBuffer x2=new StringBuffer("A");
hash.add(x);
hash.add(x2);
System.out.print(hash.size());
Ai turma resultado?
Se não me engano StringBuffer não sobrescreve o método equals, então escreveria 2.
Exato, StringBuffer não sobrescreve o equals logo os dois objetos são considerados diferentes e são adicionados. Segundo o javadoc, segue a assinatura do método add do HashSet:
Pra saber se o objeto está presente ou não ele usa o equals, se fossem Strings por exemplo, os dois objetos seriam considerados iguais e o size seria 1.
Lembrando que HashSet é uma implementação de Set e não aceita objetos repetidos!