Collections.replaceAll()

Pessoal estou tentando utilizar o método replaceall() de Collections numa ArrayList mas nao esta funcionando, alguma dica

public class OrdenaStrings {
public static void main(String[] args) {

	List<String> palavras = new ArrayList<String>();
	palavras.add("Alura Cursos On Line");
	palavras.add("Code Academy");
	palavras.add("Khan Academy");
	palavras.add("Udemy");
	palavras.add("Editora Casa do Codigo");
	palavras.add("Caelum");

	Collections.replaceAll(palavras, "a", "!");
	System.out.println(palavras);
	}}

Explique melhor, como assim não funciona? Qual seu objetivo com este código?
Já adiantando algo que imaginei, vc não está tentando substituir a letra “a” das Strings por “!”???
Isso não vai funcionar, pq Collections.replaceAll serve para substituir OBJETOS da lista.

Ahhh agora entendi =D

Seria por exemplo:

public class OrdenaStrings {
public static void main(String[] args) {

	// List<String> palavras = Arrays.asList("Alura Cursos On Line", "Code
	// Academy", "Khan Academy", "Udemy", "Editora Casa do Codigo",
	// "Caelum");

	
	List<String> palavras = new ArrayList<String>();
	palavras.add("Alura Cursos On Line");
	palavras.add("Code Academy");
	palavras.add("Khan Academy");
	palavras.add("Udemy");
	palavras.add("Editora Casa do Codigo");
	palavras.add("Caelum");

	Collections.replaceAll(palavras, "Code Academy", "!!!!!!");
	System.out.println(palavras);

}}

Cara, você está confundindo alhos com bugalhos.
O método replaceAll da classe Collections vai pegar todos os elementos da collection passada como primeiro argumento que são iguais ao segundo argumento e substituir pelo terceiro

public class OrdenaStrings {
    public static void main(String[] args) {

        List<String> palavras = new ArrayList<String>();
        palavras.add("Alura Cursos On Line");
        palavras.add("Code Academy");
        palavras.add("Khan Academy");
        palavras.add("Udemy");
        palavras.add("Editora Casa do Codigo");
        palavras.add("Caelum");

        Collections.replaceAll(palavras, "Caelum", "Editora do Bozo");
        System.out.println(palavras);
    }
}

Saída:
[Alura Cursos On Line, Code Academy, Khan Academy, Udemy, Editora Casa do Codigo, Editora do Bozo]

E se no caso eu quisesse alterar uma letra por exemplo “a” por “b” nos objetos qual seria o método

for(String p : palavras) {
    p.replaceAll("a", "b");//Este replaceAll é diferente do que você estava tentando usar
}

Isso mesmo, usa-se um for pra isso, porém recomendo usar o método replace ao inves do replaceAll
Diferença:
replaceAll usa expressões regulares. Resumo: se quiser substituir . vai bugar.
Parece que o replaceAll é para fazer replace de “TUDO” que encontrar, mas não é, é só ler a documentação, o replace também vai substituir todas ocorrências.

Obrigado Luis

Obrigado Rodrigo