Tabela hash

Olá pessoal!
Estou com um tabalho de faculdade pra fazer e estou tendo muita dificuldade, visto que java não é meu forte.
A situação é a seguinte:
existe um vetor com uma coleção de dados sobre 40 pessoas. Para cada pessoa são mantidos cpf, nome, idade e sexo.
A ideia é permitir o acesso aos dados sendo as chaves de busca o cpf ou nome. A tabela hash é de tamanho 13 e deve ter resolução de conflitos por lista encadeada.
Eu criei uma classe Pessoa com os devidos atributos, gets e sets. Criei uma outra classe vetorPessoas que possui um atributo vetor do tipo pessoa.
Eu já consigo tbm inserir dados nesse vetor.
Agora falta a parte da tabela hash… eu já li muito sobre isso mas não consigo monta-la.
Aguem pode me ajudar.

Você deve usar HashSet

E na classe Pessoa subscrever os métodos equals e hashCode

Acho que é isso que você quer, se não for, favor explicar novamente que eu não entendi

Obrigada Bruno! Vou tentar explicar melhor.
Não é permitido para esse trabalho utilizar os api’s Java. É pra fazer na unha, rsrsrs.
Eu tenho que criar uma tabela Hash de 13 posições, nela guardar a chave, a posição do vetor em que essa chave se encontra e um ponteiro. Visto que a resolução de conflito da tabela hash tem quer usando lista encadeada. Esse vetor do qual falei é o vetor de pessoas de 40 posições. Para cada pessoa são mantidos os seguintes dados: cpf, nome, enderço, etc…
Essa é minha classe pessoa:

public class Pessoa { private int idade; private String nome, sexo, endereco, CPF; public String getCPF() { return CPF; } public void setCPF(String CPF) { this.CPF = CPF; } public int getIdade() { return idade; } public void setIdade(int idade) { this.idade = idade; } public String getNome() { return nome; } public void setNome(String nome) { this.nome = nome; } public String getSexo() { return sexo; } public void setSexo(String sexo) { this.sexo = sexo; } public String getEndereco() { return endereco; } public void setEndereco(String endereco) { this.endereco = endereco; } }

Essa é minha tabelaHash:

public class TabelaHash {
//decçarando as variáveis
private Pessoa[] vetorPessoa;
private Nodo[] vetorHash;
private int size, soma, valorHash, position;
private String chave;

//criando a estrutura
private static class Nodo{
    private String chave;
    private int position;
    private Nodo prox;
}

//construtora
public TabelaHash(int position){
    this.size = 13;
    this.vetorHash = new Nodo[size];
    this.position = position;
}
//métodos
public int funcaoHash(String chave){
    for(int i = 0; i<chave.length(); i ++){
        soma = soma + chave.charAt(i);
        valorHash = soma % 12;
    }
    return valorHash;
}
public void inserir(Nodo item){
    chave = item.chave;
    valorHash = funcaoHash(chave);
    while(vetorHash[valorHash] != null){
        vetorHash[valorHash].prox = new Nodo();
        vetorHash[valorHash].prox.chave = new Nodo();

        ++valorHash;

    }


}
public void remover(){

}
public Nodo pesquisa(String chave){
    valorHash = funcaoHash(chave);
    while(vetorHash[valorHash] != null){
        if(vetorHash[valorHash].chave.equals(chave)){
            
        }
    }

    
}

}
Ela ainda não está pronta, pois é ai que está minha dificuldade. Qdo eu inserir uma pessoa no vetor pessoa, eu tenho que quagar a chave(nome ou cpf) a posição do vetor na qual a pessoa foi inserida e o apontador para o proximo nodo. Visto que qdo meu hash der igual a 0, por exemplo na segunda vez, eu aloco um novo espaço e armazeno a segunda informação… Confuso, não? Esse é o meu main, por enquanto, pois a inserção no vetor de pessoas tem que ser via teclado ou lendo de uma arquivo.

public class Main {
    private static String line;
    private static String[] vetorDados;
    private static Pessoa[] vetorPessoa = new Pessoa[40];
        public static void main(String[] args){
            Pessoa pessoa = new Pessoa();// cria objeto pessoa
            pessoa.setNome("João");
            pessoa.setCPF("05155433657");
            pessoa.setEndereco("teste");
            pessoa.setIdade(15);
            pessoa.setSexo("Masculino");
            VetorPessoas lista = new VetorPessoas();
            lista.adiciona(pessoa);
            TabelaHash tabela = new TabelaHash(lista.getTotalDePessoas());
            TabelaHash[] vetorHash = new TabelaHash[13];

            //System.out.print(lista);
            System.out.print(lista);
        }
}

Acho que com o codigo e vendo os meus erros, kkk, vai entender, espero!
Obrigada!>