Tengo una colección de cadenas, y me gustaría convertirla en una colección de cadenas, todas vacías o nulas. Las cadenas se eliminan y todas las demás se recortan.Guava: cómo combinar filtro y transformar?
puedo hacerlo en dos pasos:
final List<String> tokens =
Lists.newArrayList(" some ", null, "stuff\t", "", " \nhere");
final Collection<String> filtered =
Collections2.filter(
Collections2.transform(tokens, new Function<String, String>(){
// This is a substitute for StringUtils.stripToEmpty()
// why doesn't Guava have stuff like that?
@Override
public String apply(final String input){
return input == null ? "" : input.trim();
}
}), new Predicate<String>(){
@Override
public boolean apply(final String input){
return !Strings.isNullOrEmpty(input);
}
});
System.out.println(filtered);
// Output, as desired: [some, stuff, here]
Pero hay una manera de guayaba de la combinación de las dos acciones en un solo paso?
como skaffman, eso es la forma más sencilla de hacerlo; en cuanto a su nota acerca de algunas funciones muy comúnmente utilizadas que no están cocidas, ¿por qué no solicitar la API 'Strings' agregar algunas' Funciones 'estáticas y' Predicado 'para ejemplos como este? Encontré a los responsables de mantenimiento en http://code.google.com/p/guava-libraries/issues/list razonablemente receptivos. – Carl
@Carl bueno, ya tengo problemas en la ruta allí http://code.google.com/p/guava-libraries/issues/list?can=2&q=reporter:sean,mostlymagic.com y no quiero para poner de sus nervios. Pero podría hacer eso, porque eventualmente me gustaría que Guava reemplace commons/lang y commons/io por mí y todavía me queda un largo camino por recorrer. –
Creo que podrías filtrar y luego transformar. Por lo tanto, no es necesario que pruebe el caso nulo en su transformación –