Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

É basicamente isso?

Implementei no meu pequeno mundo de videolocadora os conceitos de hashcode e equals.

package treino;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.List;

public class VideoLocadora {

    private String nome;
    private String endereco;
    List<Filme> filmes = new ArrayList<>();

    public void catalogar(Filme fm) {
        this.filmes.add(fm);
    }

    public void exibirCatalogo() {
        filmes.forEach(filme -> {
            System.out.println(filme);
        });
    }

    public boolean estaCatalogado(Filme fm) {
        return this.filmes.contains(fm);
    }

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

    public void setEndereco(String endereco) {
        this.endereco = endereco;
    }

    public String getNome() {
        return nome;
    }

    public String getEndereco() {
        return endereco;
    }

    public Collection<Filme> getFilmes() {
        return Collections.unmodifiableCollection(filmes);
    }
}
package treino;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class Filme implements Comparable<Filme>{

    private String nome;
    private int minutos;
    private List<Ator> ator = new ArrayList<Ator>(); //para adicionar vários atores em um filme

    public Filme(String nome, int minutos) {
        this.nome = nome;
        this.minutos = minutos;
    }

    public void adiciona(Ator ator) {
        this.ator.add(ator);
    }

    public String getNome() {
        return nome;
    }

    public int getMinutos() {
        return minutos;
    }

    public List<Ator> getAtor() {
        return Collections.unmodifiableList(ator); //não permitir edições na List, somente vizualização
    }

    @Override
    public boolean equals(Object obj) { //comparando nomes de filmes
        Filme filme = (Filme) obj;
        return this.nome.equals(filme.nome);
    }

    @Override
    public int hashCode() { //pegando o código objeto da referência
        return this.nome.hashCode();
    }

    @Override
    public String toString() {
        return "Nome: " + this.nome + "\nDuração: " + this.minutos + " minutos\nAtores: " + this.ator;
    }

    @Override
    public int compareTo(Filme outroFilme) { //comparar dois filmes pela ordem alfabética
        return this.nome.compareTo(outroFilme.nome);
    }
}
package treino;

public class TestaVideoLocadora {

    public static void main(String[] args) {
        VideoLocadora vd = new VideoLocadora();
        vd.setNome("Foster");
        vd.setEndereco("Rua dos Bacanas");

        Filme fm = new Filme("First Blood", 93);
        Filme fm2 = new Filme("Rambo: First Blood Part II", 96);
        Filme fm3 = new Filme("Rambo III", 102);

        vd.catalogar(fm);
        vd.catalogar(fm2);
        vd.catalogar(fm3);

        vd.exibirCatalogo();

        System.out.println();

        Filme fm4 = new Filme("First Blood", 93);
        System.out.println("O filme " + fm4 + " está catalogado? ");
        System.out.println(vd.estaCatalogado(fm4));
    }
}

Insira aqui a descrição dessa imagem para ajudar na acessibilidade Ta tudo ok?

1 resposta
solução!

Oi, Lucas, como vai?

Muito bom! É isso mesmo!

Parabéns pelo empenho nos estudos!

Continue praticando.

E qualquer dúvida pode contar com a gente aqui no fórum.

Abraços e bons estudos!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software