Soy una cadena para reemplazar una cadena en una columna ArrayList. Obtengo un error en la expresión
Bad return type in lambda expression: String cannot be converted to Articles
articlesArrayList.replaceAll(articles -> articles.getAuthor().replace("."," "));
2 respuestas
El método replaceAll
está intentando devolver una serie de artículos. En su lugar, su mapa de funciones devuelve una cadena. Si desea reemplazar el '.' carácter con "" para cada autor, utilice el método ArrayList.forEach
en su lugar.
class Main {
public static void main(String[] args) {
new Main().replace();
}
public void replace() {
List<Article> articlesArrayList = new ArrayList<>();
articlesArrayList.add(Article.builder().author("Sagar.Gangwal").build());
articlesArrayList.stream().forEach(article -> article.getAuthor().replaceAll(".", " "));
articlesArrayList = articlesArrayList.stream()
.map(a -> this.update(a)).collect(Collectors.toList());
System.out.println(articlesArrayList.get(0));
}
private static Article update(Article a) {
a.author = a.getAuthor().replaceAll("\\.", " ");
return a;
}
}
Puede ver el código anterior.
Aquí estoy tratando de crear una transmisión y luego para cada elemento de esa transmisión quiero actualizar AuthorName con '.' Al espacio.
articlesArrayList.stream().map(a -> this.update(a)).collect(Collectors.toList());
Debe usar la API de transmisión y luego el método de actualización personalizado para actualizar el valor.
Además, para reemplazar '.'
, también debe usar el carácter de escape. El método replaceAll
de la clase String
contiene el primer argumento como regular expression
.
Si ve esto, estoy escapando '.'
con '\\.'
. a.getAuthor().replaceAll("\\.", " ");
Entonces, en lugar de replaceAll
, puede optar por el método de reemplazo que simplemente toma el primer argumento como simplemente reemplazar un carácter con el carácter de destino pasado.
Puede ver la diferencia entre replace and replaceAll.
Nuevas preguntas
java
Java es un lenguaje de programación de alto nivel. Utilice esta etiqueta cuando tenga problemas para usar o comprender el idioma en sí. Esta etiqueta rara vez se usa sola y se usa con mayor frecuencia junto con [spring], [spring-boot], [jakarta-ee], [android], [javafx], [hadoop], [gradle] y [maven].