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.