//Titulo
public class Titulo implements Comparable<Titulo> {
private String nome;
private int anoDeLancamento;
private boolean incluidoNoPlano;
private double somaDasAvaliacoes;
private int totalDeAvaliacoes;
private int duracaoEmMinutos;
public Titulo(String nome, int anoDeLancamento) {
this.nome = nome;
this.anoDeLancamento = anoDeLancamento;
}
public String getNome() {
return nome;
}
public int getAnoDeLancamento() {
return anoDeLancamento;
}
public boolean isIncluidoNoPlano() {
return incluidoNoPlano;
}
public int getDuracaoEmMinutos() {
return duracaoEmMinutos;
}
public int getTotalDeAvaliacoes() {
return totalDeAvaliacoes;
}
public void setNome(String nome) {
this.nome = nome;
}
public void setAnoDeLancamento(int anoDeLancamento) {
this.anoDeLancamento = anoDeLancamento;
}
public void setIncluidoNoPlano(boolean incluidoNoPlano) {
this.incluidoNoPlano = incluidoNoPlano;
}
public void setDuracaoEmMinutos(int duracaoEmMinutos) {
this.duracaoEmMinutos = duracaoEmMinutos;
}
public void exibeFichaTecnica(){
System.out.println("Nome do filme: " + nome);
System.out.println("Ano de lançamento: " + anoDeLancamento);
System.out.println("incluido no plano: " + incluidoNoPlano);
System.out.println("Duração em minutos:" + duracaoEmMinutos);
}
public void avalia(double nota){
somaDasAvaliacoes += nota;
totalDeAvaliacoes++;
}
public double pegaMedia(){
return somaDasAvaliacoes / totalDeAvaliacoes;
}
@Override
public int compareTo(Titulo outroTitulo) {
return this.getNome().compareTo(outroTitulo.getNome());
}
}
// PrincipalComListas
package br.com.alura.screenmatch.principal;
import br.com.alura.screenmatch.modelos.Filme;
import br.com.alura.screenmatch.modelos.Serie;
import br.com.alura.screenmatch.modelos.Titulo;
public class PrincipalComListas {
public static void main (String []args) {
Filme meuFilme = new Filme("Duelo de titãs", 1999);
meuFilme.avalia(9);
Filme outroFilme = new Filme("Avatar", 2023);
outroFilme.avalia(8.5);
var filmeDoHenrique = new Filme("Top Gun", 2022);
filmeDoHenrique.avalia(10);
Serie chosen = new Serie("The Chosen", 2018);
Filme f1 = filmeDoHenrique;
List<Titulo> lista = new LinkedList<>();
lista.add(filmeDoHenrique);
lista.add(meuFilme);
lista.add(outroFilme);
lista.add(chosen);
// Ordenando a lista
Collections.sort(lista);
for (Titulo item: lista) {
System.out.println( item.getNome());
if (item instanceof Filme) {
Filme filme = (Filme) item;
if (item instanceof Filme filme && filme.getClassificacao() > 2) {
System.out.println("Classificação " + filme.getClassificacao());
}
}
ArrayList<String> buscarArtista = new ArrayList<>();
buscarArtista.add("Denzel Washington");
buscarArtista.add("Jake Sully");
buscarArtista.add("Tom Cruise");
buscarArtista.add("Jonathan Roumie");
Collections.sort(buscarArtista);
System.out.println("Depois da ordenação ");
System.out.println(buscarArtista);
System.out.println("Lista de titulos orednados: ");
Collections.sort(lista);
System.out.println(lista);
lista.sort(Comparator.comparing(Titulo::getAnoDeLancamento));
System.out.println("Ordenando por ano: ");
System.out.println(lista);
}
}