Pessoal estou tentando utilizar o método replaceall() de Collections numa ArrayList mas nao esta funcionando, alguma dica
publicclassOrdenaStrings{publicstaticvoidmain(String[]args){List<String>palavras=newArrayList<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.
A
Antonio_Conrado
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=newArrayList<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);
}}
L
Luis_Augusto_Santos
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
publicclassOrdenaStrings{publicstaticvoidmain(String[]args){List<String>palavras=newArrayList<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]
A
Antonio_Conrado
E se no caso eu quisesse alterar uma letra por exemplo “a” por “b” nos objetos qual seria o método
L
Luis_Augusto_Santos
for(Stringp:palavras){
p.replaceAll("a","b");//Este replaceAll é diferente do que você estava tentando usar
}
R
Rodrigo_Void
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.