Olá pessoal, eu pedi uma mãozinha para fazer um metodo que pesquisava em um arraylist de filmes o título do filme com maior numero de letras diferentes, um amigo aqui do forum me respondeu com este método(que funciona perfeitamente):
class ContagemLetrasDistintas {
public static void main (String[] args) {
String s = "The quick brown fox jumps over the lazy dog.";
boolean[] b = new boolean [26]; // inicialmente todos os valores são "false"
for (int i = 0; i < s.length(); ++i) {
char ch = Character.toUpperCase (s.charAt (i));
if ('A' <= ch && ch <= 'Z') {
b[ch - 'A'] = true;
}
}
int contagemLetrasDistintas = 0;
for (int i = 0; i < b.length; ++i) {
if (b[i]) contagemLetrasDistintas++;
}
System.out.printf ("Existem %d letras distintas na string [%s]%n", contagemLetrasDistintas, s);
}
}
Só que na aula só aprendi até agora Arraylist e não array apenas, primeiro alterei o metodo dele pras minhas exigências e funcionou ok, tentei então mudar pra Arraylist e inicialmente não consegui, e achei que fosse porque arrayList não aceitasse tipos primitivos(que acho que não aceita mesmo, só objetos), mas perguntei pra um professor e o mesmo me informou que era apenas colocar o primeiro b do boolean maiúsculo que funcionaria(assim --> ) e funcionou mesmo, só que como eu alterei o método acima eu fiz algo errado, pois o meu com arrayList ta pegando letras repetidas, acho que por uma linha que não entendi… Essa linha que não sei o que faz:
if ('A' <= ch && ch <= 'Z') {
b[ch - 'A'] = true; // <-- aqui
}
Como não sei o que faz não sei como por no meu método, inicialmente coloquei ali b.add(true), mas aí adiciona todas letras, inclusive as repetidas…
Como posso fazer pra mudar no arrayList e funcionar direito… O que usar em vez de b.add(true)?
Grato.

