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);
    }
}