Utilizando as classes de coleções vistas em aula, determine a(s) mais apropriada(s) para resolver os problemas a seguir.

  1. Verificação de Palíndromo: Desenvolva um programa que recebe uma string como entrada e verifica se ela é um palíndromo.
  2. Contagem de Palavras Únicas: Escreva um programa que conta o número de ocorrências de cada palavra em um texto.
  3. Implementação de uma Pilha: Implemente uma classe que represente uma pilha (stack) utilizando um ArrayList ou LinkedList.
  4. Ordenação de Números Únicos: Crie um programa que recebe uma lista de números inteiros e remove os duplicados, mantendo a ordem original dos elementos
  5. Implementação de um Dicionário: Crie um dicionário que mapeie palavras em seus significados.
  6. Remoção de Elementos Duplicados: Desenvolva um programa que remova os elementos duplicados de uma lista, mantendo apenas a primeira ocorrência de cada elemento.
  7. ~~Fila Circular: Implemente uma fila circular que suporte operações de enfileirar e desenfileirar.~~
  8. Contagem de Frequência de Caracteres: Crie um programa que conta a frequência de cada caractere em uma string.
  9. Ordenação de Objetos Personalizados com Comparator: Crie uma classe Aluno com campos nome e nota. Em seguida, crie um ArrayList de alunos e, usando Comparator, ordene-os primeiro por nome e depois por nota.
  10. PriorityQueue de Tarefas: Crie uma PriorityQueue de tarefas com prioridades associadas. As tarefas podem ser representadas por uma classe com os campos nome, prioridade e tempoEstimado. Implemente a lógica para executar as tarefas de acordo com sua prioridade. Considere que executar uma tarefa consiste simplesmente de removê-la da fila e exibi-la.
  11. LinkedHashMap de Contatos: Crie uma aplicação de agenda telefônica que use um LinkedHashMap para armazenar nomes e números de telefone. Permita que o usuário adicione, remova e pesquise contatos pelo nome.
  12. HashSet de Objetos Personalizados: Crie uma classe Produto com campos id e nome. Em seguida, crie um HashSet de produtos e verifique se ele permite a inserção de objetos duplicados. Como você garantiria que não há duplicatas?
  13. LinkedHashSet de Strings: Crie um LinkedHashSet de strings e insira uma série de palavras. Faça o mesmo com um HashSet e um TreeSet. Verifique se a ordem de inserção é preservada ao iterar sobre cada um dos conjuntos e explique o porquê.