Ainda não tem acesso? Estude com a gente! Matricule-se
Ainda não tem acesso? Estude com a gente! Matricule-se

Solucionado (ver solução)

Utilizar o HashSet em uma classe

Caros amigos, eu estou querendo fazer uma classe Grupo que contenha várias pessoas, de modo que possam existir vários Grupos com pessoas distintas. E para isso, estou querendo utilizar o HashSet, porém não estou tendo êxito nisso e vim aqui pedir ajuda a vocês. Os meus códigos estão a seguir.

Eu tenho a seguinte classe Grupo:

import java.util.HashSet;

public class Grupo{
    private HashSet<Pessoa> pessoa;

    public Grupo( ) {
        new HashSet<Pessoa>();
    }

    public void addMembro(Pessoa p) {
        pessoa.add(p);
    }

    public void mostra() {
        System.out.println(this.grupo);
    }
}

A classe Pessoa:

public class Pessoa {
    int nome;

    public Pessoa(String nome) {
        this.nome = nome;
    }

    @Override
    public String toString() {    
        return nome;
    }
}

Uma classe main para Teste:

import java.util.HashSet;
import java.util.Set;

public class TestaHashSet {
    public static void main(String[] args) {

        Pessoa p1 = new Pessoa("Pedro");
        Pessoa p2 = new Pessoa("Tiago");
        Pessoa p3 = new Pessoa("João");

        Grupo g1 = new Grupo();
        g1.addMembro(p1);
        g1.addMembro(p2);
        g1.addMembro(p3);

        System.out.println(g1);
    }
}
4 respostas

Bom dia Breno, no caso acho q sua classe grupo poderia ser apagada, vc pode simplesmente criar um "grupo" no seu método main e ir adicionando as pessoas nele. Veja se é assim que vc quer fazer.

import java.util.HashSet;

class Pessoa {
    String nome;

    public Pessoa(String nome) {
        this.nome = nome;
    }

    @Override
    public String toString() {
        return nome;
    }
}

public class TestaHashSet {
    public static void main(String[] args) {

        Pessoa p1 = new Pessoa("Pedro");
        Pessoa p2 = new Pessoa("Tiago");
        Pessoa p3 = new Pessoa("João");

        HashSet<Pessoa> grupo = new HashSet<>();

        grupo.add(p1);
        grupo.add(p2);
        grupo.add(p3);

        System.out.println(grupo);
    }
}

E caso eu quisesse fazer uma classe Empresa com vários desses grupos? Um HashSet de HashSets, seria mais interessante colocar no main ou numa classe. Outra dúvida, e se eu quisesse implementar um líder para cada grupo? ainda poderia fazer pelo main ou nesse caso deveria utilizar uma classe mesmo? Desde já agradeço sua resposta .

solução

no seu caso então acho q pode seguir essa base, que fiz, vc adicionaria um tipo para cada pessoa e poderia passar se ela é uma pessoa comum ou um líder, e depois passaria cada pessoa para sua empresa.

Pega essa base e tenta adaptar ao seu projeto

import java.util.HashSet;

class Empresa {
    private String nomeDaEmpresa;
    private HashSet<Pessoa> grupo = new HashSet<>();

    public void addPessoa(Pessoa pessoa) {
        grupo.add(pessoa);
    }

    public String getNomeDaEmpresa() {
        return nomeDaEmpresa;
    }

    public Empresa(String nomeDaEmpresa) {
        super();
        this.nomeDaEmpresa = nomeDaEmpresa;
    }

    @Override
    public String toString() {
        StringBuilder descricao = new StringBuilder("Empresa: " + nomeDaEmpresa + ", Funcionarios: {");

        for (Pessoa pessoa : grupo) {
            descricao.append("[" + pessoa.getNome() + ", " + pessoa.getTipo() + "], ");
        }

        descricao.append("}");
        return descricao.toString();
    }

}

class Pessoa {
    private String nome;
    private String tipo;

    public Pessoa(String nome, String tipo) {
        this.nome = nome;
        this.tipo = tipo;
    }

    public String getNome() {
        return nome;
    }

    public String getTipo() {
        return tipo;
    }

    @Override
    public String toString() {
        return "[nome=" + nome + ", tipo=" + tipo + "]";
    }
}

public class TestaHashSet {
    public static void main(String[] args) {

        Pessoa p1 = new Pessoa("Pedro", "lider");
        Pessoa p2 = new Pessoa("Tiago", "comum");
        Pessoa p3 = new Pessoa("João", "comum");

        Empresa empresa = new Empresa("Uma empresa Qualquer");

        empresa.addPessoa(p1);
        empresa.addPessoa(p2);
        empresa.addPessoa(p3);

        System.out.println(empresa);
    }
}

Obrigado, deu certo aqui. :)