Usar HashSet?

Galera,

Estou desenvolvendo uma pequena solução e a principio pensei em usar um HashSet, mas estou esbarrando numa dificuldade.

Seria um HashSet de Pessoas onde o identificador seria o cpf, como o Set não permite a repetição imaginei que isso resolveria meus problemas.

O problema é que eu preciso verificar se existe algum Objeto Pessoa dentro do HashSet com atributo Cpf igual ao Cpf (String) que eu quero comparar. Se por ventura ainda não existir, criarei um novo Objeto e vou incluir no Hash, se já existe esse cpf será descartado e não preciso criar um novo objeto.

É possível fazer essa verificação?

Consegui fazendo um for each percorrendo todo o HashSet, seria essa a melhor implementação?

HashSet é uma implementação de coleção de objetos. Pelo que entendi na sua descrição você quer usar o cpf como chave, então a implementação mais adequada seria o HashMap.

HashSet -> coleção de elementos
HashMap -> coleção de pares chave-elemento

Então, você terá o método .containsKey para a necessidade.

Como nosso amigo ali em cima falou, acredito que no seu caso a melhor solução é o HashMap.

Map<CHAVE, VALOR> map = new HashMap<CHAVE, VALOR>();