Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

1 A 5 DESAFIOS-COMO ADAPTO O Nº 5 COMO O DO INSTRUTOR?

Olá! Seguem os desafios. Gostaria, se possivel, uma explicação detalhada do número 5, pois só consegui fazer declarando o tipo de lista (Array ou Linked-List) no iníco de cada uma. Como faço para que no meu código ele compile apenas com a declaração List como no código do instrutor? Agradeço muito!

DESAFIO 1
package br.com.alura.Screenmatch7.um;
import java.util.ArrayList;
import java.util.Collections;
public class ODPrincipalUm {
    public static void main(String[] args){
    Numero numero1 = new Numero(5);
    Numero numero2 = new Numero(8);
    Numero numero3 = new Numero(4);
    Numero numero4 = new Numero(2);

    ArrayList<Numero> lista = new ArrayList<>();
    lista.add(numero1);
    lista.add(numero2);
    lista.add(numero3);
    lista.add(numero4);

    Collections.sort(lista);
    System.out.println(lista); }}
package br.com.alura.Screenmatch7.um;
public class Numero implements Comparable<Numero> {
    int algarismo;
    public Numero(int algarismo) {
        this.algarismo = algarismo;}
    public int getAlgarismo() {
        return algarismo; }
    @Override
    public String toString() {
        return "Número: " + this.getAlgarismo();}
    @Override
    public int compareTo(Numero outro) {
        if (this.getAlgarismo() < outro.getAlgarismo()) {
            return -1;
        } else if (this.getAlgarismo() > outro.getAlgarismo()) {
            return 1;
        }else{
            return 0; }}}
DESAFIO 2 E 3
package br.com.alura.Screenmatch7.doisEtres;
import java.util.ArrayList;
import java.util.Collections;
public class ODPrincipalDoiseTres {
    public static void main(String[] args) {
        Titulo titulo1 = new Titulo("SCREENMATCH");
        Titulo titulo2 = new Titulo("ORDENANDO DADOS");
        Titulo titulo3 = new Titulo("MÓDULO 4");

        ArrayList<Titulo> listaTitulos = new ArrayList<>();
        listaTitulos.add(titulo1);
        listaTitulos.add(titulo2);
        listaTitulos.add(titulo3);
        System.out.println("Ordenados em sequência");
        System.out.println(listaTitulos);

        Collections.sort(listaTitulos);
        System.out.println("Ordenados por ordem alfabética");
        System.out.println(listaTitulos); }}
package br.com.alura.Screenmatch7.doisEtres;
public class Titulo implements Comparable<Titulo>{
    private String nome;
    public String getNome() {return nome;}
    public Titulo(String nome){this.nome = nome;}
    @Override
    public String toString() {
        return "TÍTULO: " + this.getNome();}
    @Override
    public int compareTo(Titulo outroTitulo) {
        return this.getNome().compareTo(outroTitulo.getNome()); }
DESAFIO 4
package br.com.alura.Screenmatch7.quatro;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
public class ODPrincipalQuatro {
    public static void main(String[] args) {
        Lista nota1 = new Lista(8);
        Lista nota2 = new Lista(7.5);
        Lista nota3 = new Lista(5.8);
        Lista nota4 = new Lista(9.5);
        Lista nota5 = new Lista(6.5);

        ArrayList<Lista> arrayNota = new ArrayList<>();
        arrayNota.add(nota1);
        arrayNota.add(nota2);
        arrayNota.add(nota3);
        arrayNota.add(nota4);
        arrayNota.add(nota5);
        System.out.println("ArrayList das notas");
        System.out.println(arrayNota);

        List<Lista> listnota = new LinkedList<>();
        listnota.add(nota1);
        listnota.add(nota2);
        listnota.add(nota3);
        listnota.add(nota4);
        listnota.add(nota5);
        System.out.println("List das notas");
        System.out.println(listnota);}}
package br.com.alura.Screenmatch7.quatro;
public class Lista {
    private double nota;
    public Lista(double nota){this.nota = nota;}
    public double getNota() {return nota;}
    @Override
    public String toString() {return "Nota: " + this.getNota();}}
DESAFIO 5
package br.com.alura.Screenmatch7.cinco;

import java.util.ArrayList;
import java.util.LinkedList;

public class ODPrincipalCinco {
    public static void main(String[] args) {
        ArrayList<String> ArrayPolimorfismo;

        ArrayPolimorfismo = new ArrayList<>();
        ArrayPolimorfismo.add("8");
        ArrayPolimorfismo.add("7.5");
        ArrayPolimorfismo.add("5.8");
        ArrayPolimorfismo.add("9.5");
        ArrayPolimorfismo.add("6.5");
        System.out.println("ArrayList: " + ArrayPolimorfismo);

        LinkedList<String> ListPolimorfismo;

        ListPolimorfismo = new LinkedList<>();
        ListPolimorfismo.add("8");
        ListPolimorfismo.add("7.5");
        ListPolimorfismo.add("5.8");
        ListPolimorfismo.add("9.5");
        ListPolimorfismo.add("6.5");
        System.out.println("LinkedList: " + ListPolimorfismo)}
2 respostas

Oi, Ana! Tudo bem?

Usar a interface List<String> em vez de declarar explicitamente ArrayList ou LinkedList é uma prática comum em Java para aproveitar o polimorfismo, permitindo que você altere a implementação da lista sem mudar o restante do código, o que podemos implementar da seguinte forma:

package br.com.alura.Screenmatch7.cinco;

import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;

public class ODPrincipalCinco {
    public static void main(String[] args) {
        List<String> listaPolimorfismo;

        // Usando ArrayList
        listaPolimorfismo = new ArrayList<>();
        listaPolimorfismo.add("8");
        listaPolimorfismo.add("7.5");
        listaPolimorfismo.add("5.8");
        listaPolimorfismo.add("9.5");
        listaPolimorfismo.add("6.5");
        System.out.println("ArrayList: " + listaPolimorfismo);

        // Usando LinkedList
        listaPolimorfismo = new LinkedList<>();
        listaPolimorfismo.add("8");
        listaPolimorfismo.add("7.5");
        listaPolimorfismo.add("5.8");
        listaPolimorfismo.add("9.5");
        listaPolimorfismo.add("6.5");
        System.out.println("LinkedList: " + listaPolimorfismo);
    }
}

No código podemos observar a:

  1. Importação da Interface List: Importamos a interface List do pacote java.util.
  2. Declaração da Variável: Declaramos a variável listaPolimorfismo do tipo List<String>.
  3. Instanciação com ArrayList: Inicializamos listaPolimorfismo com uma instância de ArrayList<String>, adicionamos elementos e imprimimos a lista.
  4. Instanciação com LinkedList: Reutilizamos a mesma variável listaPolimorfismo, mas agora inicializamos com uma instância de LinkedList<String>, adicionamos elementos e imprimimos a lista.

Dessa forma, estamos demonstrando o uso do polimorfismo, onde a mesma variável pode referenciar diferentes implementações da interface List.

Espero ter ajudado!

Um forte abraço e bons estudos!

Caso este post tenha te ajudado, por favor, marcar como solucionado ✓
solução!

Ok Sarah! obrigada pelo retorno. Na verdade percebo que não tinha conseguido fazer por não ter lembrado de importar a classe List. Ao tentar de novo com seu código percebi e finalizei a importação e deu certo. Grata mesmo!