Programador de Java:
Tengo un método para eliminar algunos caracteres de una cadena. ¿Hay una mejor manera de hacer esto utilizando Java 8?
public String filter(String test) {
StringBuilder builder = new StringBuilder();
for (int i = 0; i < test.length(); i++) {
if (MYCOLLECTION.contains(test.charAt(i))) {
builder .append(test.charAt(i));
}
}
return builder .toString();
}
Eran :
Qué tal esto:
Set<Character> filter = new HashSet<>(Arrays.asList('a','b','c'));
String filtered = "abcdefga".chars ()
.filter(i -> filter.contains((char) i))
.mapToObj(i -> "" + (char) i)
.collect(Collectors.joining());
System.out.println (filtered);
Salida:
abca
Nota: filter
sirve al mismo propósito que tu MYCOLLECTION
- Yo sólo le di un nombre más significativo y se utiliza una Set
para un mejor rendimiento de contains
.
Podría haber estado más limpia si había una CharStream
(es decir, corriente de primitiva char
s), por lo que no tendría que usar una IntStream
.