Identificar palavras duplicadas em uma frase utilizando uma Tabela Hash. Depois exibir essas palavras duplicadas e tratar de forma diferente letras minúsculas e maiúsculas, ignorando a pontuação.
import java.util.Map;
import java.util.HashMap;
import java.util.Set;
import java.util.TreeSet;
import java.util.Scanner;
public class Exercicio {
public static void main(String[] args) {
Map<String, Integer> myMap = new HashMap<String, Integer>();
createMap(myMap);
displayMap(myMap);
}
private static void createMap(Map<String, Integer> map) {
Scanner scanner = new Scanner(System.in);
System.out.println("Digite uma string:");
String input = scanner.nextLine();
String[] tokens = input.split(" ");
for (String token : tokens) {
String word = token.toLowerCase();
if (map.containsKey(word)) {
int count = map.get(word);
map.put(word, count + 1);
} else
map.put(word, 1);
}
scanner.close();
}
private static void displayMap(Map<String, Integer> map) {
Set<String> keys = map.keySet();
TreeSet<String> sortedKeys = new TreeSet<String>(keys);
System.out.println("\nMapa contém:\nChave\t\tValor");
for (String key : sortedKeys)
System.out.printf("%-10s%10s\n", key, map.get(key));
System.out.printf("\ntamanho: %d\nestá vazio: %b\n", map.size(), map.isEmpty());
}
}