2
respostas

Lista de Inteiros com Collections.sort

Exercício 1: Ordenação de Lista de Inteiros com Collections.sort

import java.util.ArrayList;
import java.util.Collections; // Importe a classe Collections
import java.util.List;       // Importe a interface List

public class Exercicio1 {
    public static void main(String[] args) {
        // Crie uma lista de números inteiros (usando ArrayList)
        List<Integer> numeros = new ArrayList<>();

        // Adicione alguns números à lista
        numeros.add(50);
        numeros.add(10);
        numeros.add(30);
        numeros.add(20);
        numeros.add(40);
        numeros.add(5);

        System.out.println("--- Lista Original ---");
        System.out.println(numeros);

        // Utilize o método Collections.sort para ordená-la em ordem crescente
        Collections.sort(numeros);

        System.out.println("\n--- Lista Ordenada (Crescente) ---");
        // Imprima a lista ordenada
        System.out.println(numeros);
    }
}

Exercício 2: Classe Titulo com Comparable

// Titulo.java
public class Titulo implements Comparable<Titulo> {
    private String nome;

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

    public String getNome() {
        return nome;
    }

    // Método para exibir o título (útil para impressão)
    @Override
    public String toString() {
        return "Título: " + nome;
    }

    // Implementação da interface Comparable
    // Compara títulos com base em seus nomes (ordem alfabética)
    @Override
    public int compareTo(Titulo outroTitulo) {
        return this.nome.compareTo(outroTitulo.nome);
    }
}

Exercício 3: Ordenação de Objetos Titulo

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

public class Exercicio3 {
    public static void main(String[] args) {
        // Crie alguns objetos da classe Titulo
        Titulo titulo1 = new Titulo("A Bela e a Fera");
        Titulo titulo2 = new Titulo("Zootopia");
        Titulo titulo3 = new Titulo("Carros");
        Titulo titulo4 = new Titulo("Divertida Mente");

        // Adicione-os a uma lista
        List<Titulo> listaDeTitulos = new ArrayList<>();
        listaDeTitulos.add(titulo1);
        listaDeTitulos.add(titulo2);
        listaDeTitulos.add(titulo3);
        listaDeTitulos.add(titulo4);

        System.out.println("--- Lista de Títulos Original ---");
        for (Titulo titulo : listaDeTitulos) {
            System.out.println(titulo);
        }

        // Utilize o método Collections.sort para ordenar a lista
        // Collections.sort usa o método compareTo que implementamos em Titulo
        Collections.sort(listaDeTitulos);

        System.out.println("\n--- Lista de Títulos Ordenada por Nome ---");
        // Imprima os títulos ordenados
        for (Titulo titulo : listaDeTitulos) {
            System.out.println(titulo);
        }
    }
}

Exercício 4: ArrayList vs LinkedList com Interface List

import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List; // Importe a interface List

public class Exercicio4 {
    public static void main(String[] args) {
        System.out.println("--- Usando ArrayList ---");
        // Crie uma lista utilizando a interface List e instancie-a como ArrayList
        List<String> listaArrayList = new ArrayList<>();

        // Adicione elementos
        listaArrayList.add("Elemento A");
        listaArrayList.add("Elemento B");
        listaArrayList.add("Elemento C");

        // Imprima a lista
        System.out.println("Conteúdo da lista (ArrayList): " + listaArrayList);

        System.out.println("\n--- Usando LinkedList ---");
        // Crie uma lista utilizando a interface List e instancie-a como LinkedList
        List<String> listaLinkedList = new LinkedList<>();

        // Adicione elementos
        listaLinkedList.add("Item 1");
        listaLinkedList.add("Item 2");
        listaLinkedList.add("Item 3");
        listaLinkedList.add("Item 4");

        // Imprima a lista
        System.out.println("Conteúdo da lista (LinkedList): " + listaLinkedList);

        System.out.println("\n--- Demonstração de facilidade de troca ---");
        // Podemos facilmente atribuir uma LinkedList a uma variável do tipo List
        List<String> minhaListaGenerica = new LinkedList<>();
        minhaListaGenerica.add("Um");
        minhaListaGenerica.add("Dois");
        System.out.println("Minha lista genérica (agora LinkedList): " + minhaListaGenerica);

        // E então, mudar para ArrayList (se necessário)
        minhaListaGenerica = new ArrayList<>();
        minhaListaGenerica.add("Três");
        minhaListaGenerica.add("Quatro");
        System.out.println("Minha lista genérica (agora ArrayList): " + minhaListaGenerica);
    }
}
2 respostas

Exercício 5: Polimorfismo com Interface List

import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List; // Importe a interface List

public class Exercicio5 {
    public static void main(String[] args) {
        System.out.println("--- Polimorfismo com a interface List ---");

        // Declarar a variável usando a interface List
        List<String> minhaLista;

        // Instanciar como ArrayList
        minhaLista = new ArrayList<>();
        minhaLista.add("Primeiro elemento do ArrayList");
        minhaLista.add("Segundo elemento do ArrayList");
        System.out.println("Lista como ArrayList: " + minhaLista);

        // A mesma variável, agora instanciada como LinkedList
        minhaLista = new LinkedList<>();
        minhaLista.add("Primeiro elemento do LinkedList");
        minhaLista.add("Segundo elemento do LinkedList");
        minhaLista.add("Terceiro elemento do LinkedList");
        System.out.println("Lista como LinkedList: " + minhaLista);

        System.out.println("\nIsto demonstra que a variável 'minhaLista' pode referenciar");
        System.out.println("diferentes implementações da interface List (ArrayList, LinkedList),");
        System.out.println("mantendo a flexibilidade e o polimorfismo.");
    }
}

Oii, Daiane. Tudo bom?

É ótimo ver como você explorou diferentes formas de usar listas genéricas, aplicando Collections.sort e também implementando a interface Comparable. E, o jeito como você demonstrou o polimorfismo com a interface List tá bem claro e com uma didática excelente. É uma ótima maneira de mostrar como podemos mudar a implementação sem alterar o tipo da variável, ganhando flexibilidade no código.

Uma dica interessante para complementar sua prática seria experimentar medir o tempo de execução entre ArrayList e LinkedList em operações de leitura e inserção, para observar suas diferenças de desempenho na prática.

Parabéns por ir além da proposta e montar um conteúdo bem completo!

Conteúdos relacionados
Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!