Lista de contatos em Java

Olá,

Preciso criar uma classe Pessoa com os atributos: nome, e-mail, telefone e um arraylist de contatos do tipo Pessoa. Para ser mais exato, estou com problemas em criar o seguinte método pra minha classe: Crie um método que recebe uma pessoa como parâmetro e
retorna a lista de contatos em comum entre elas.
Ajuda por favor!
Obrigado!

Você sabe como criar um método em uma classe?

Sim

Qual a dúvida nessa questão exatamente?

Indo direto ao ponto, eu tenho que fazer uma atividade pra faculdade ( sem pontuação ) com o intuito de praticar Java nesse período de quarentena. O professor passou o seguinte exercício:

  • Crie uma classe Pessoa, uma pessoa tem nome, telefone,
    e-mail, e uma lista de contatos, que também são pessoas.
  • Crie construtores sobrecarregados que permitam:
    Inicializar o nome, telefone e o e-mail;
    Apenas o nome e o telefone;
  • Crie os getters e setters necessários;
  • Crie um método para adicionar uma nova pessoa a lista de
    contatos;
  • Crie um método que recebe o nome de uma pessoa. O
    método deve retornar a refência da pessoa caso ela esteja
    na lista de contatos, null caso contrário;
    *** Crie um método que recebe uma pessoa como parâmetro e
    retorna a lista de contatos em comum entre elas.
  • Crie um método removeContato, esse método deve receber
    o nome da pessoa a ser excluída e efetuar a exclusão da
    lista de contatos;
  • Crie um método que exibe toda a lista de contatos.

Basicamente não consegui pensar em uma forma de fazer o método com os três * .
Ele até passou um link com a resolução mas ainda tive dificuldade para entender o código :frowning:

mas o que vc ja fez???

Eu fiz os 5 tópicos, de cima pra baixo.

mas código meu consagrado, código, tópico não resolve a lição

1 curtida
public class Pessoa {
    private String nome;
    private String telefone;

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public String getTelefone() {
        return telefone;
    }

    public void setTelefone(String telefone) {
        this.telefone = telefone;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public ArrayList<Pessoa> getContatos() {
        return contatos;
    }

    public void setContatos(ArrayList<Pessoa> contatos) {
        this.contatos = contatos;
    }

    private String email;
    private ArrayList<Pessoa> contatos;

    public Pessoa(String nome, String telefone, String email){
        this.nome = nome;
        this.telefone = telefone;
        this.email = email;
        this.contatos = new ArrayList<>();
    }

    public Pessoa(String nome, String telefone){
        this.nome = nome;
        this.telefone = telefone;
        this.contatos = new ArrayList<>();
    }

    public void adicionarContato(Pessoa pessoa){
        this.contatos.add(pessoa);
    }

    public Pessoa buscaContato(String nome){
        for (Pessoa pessoa : this.contatos) {
            if (nome.equals(pessoa.getNome())) {
                return pessoa;
            }
        }
        return null;
    }

    //Duvida aqui
    public ArrayList<Pessoa> contatosComuns(Pessoa p) {
        ArrayList<Pessoa> cComuns = new ArrayList<>();
        ArrayList<Pessoa> c2 = p.getContatos();

        for(int i=0; i<this.contatos.size(); i++) {
            Pessoa corrente = this.contatos.get(i);
            for (int j=0; j<c2.size(); j++) {
                Pessoa temp = c2.get(j);
                String nomeTemp = temp.getNome();
                if(nomeTemp.equals(corrente.getNome())) {
                    cComuns.add(temp);
                    break;
                }
            }
        }
        return cComuns;
    }
}

Estou com duvida no método contatosComuns. Se puder explica-lo, agradeço.

pelo que eu entendi você vai pegar 2 pessoas, dentro de cada uma delas tem uma lista de contatos, voce vai comparar contato por contato e retornar os que são iguais.
ex:
Pessoa: Joao
contatos:
Ana, beatriz, joana

Pessoa: Gustavo
contatos:
jordana, beatriz, maria, ana

Então a saida vai ser:
Ana e beatriz

1 curtida