J'ai une collection de chaînes, et je voudrais le convertir en une collection de chaînes étaient tous vides ou null Les chaînes sont supprimés et tous les autres sont rognés.Goyave: comment combiner filtre et transformer?
je peux le faire en deux étapes:
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]
Mais est-il un moyen goyave de combiner les deux actions en une seule étape?
comme des notes skaffman, qui est à peu près la façon la plus simple de le faire; quant à votre note à propos de certaines fonctions assez couramment utilisées ne sont pas cuites dans - pourquoi ne pas demander l'API 'Strings' ajouter des fonctions statiques' et 'Predicate pour des exemples sensibles comme ceci? J'ai trouvé les mainteneurs sur http://code.google.com/p/guava-libraries/issues/list raisonnablement réactifs. – Carl
@Carl Eh bien, je ai déjà des problèmes dans le pipeline il http://code.google.com/p/guava-libraries/issues/list?can=2&q=reporter:sean,mostlymagic.com et je ne veux pas pour se mettre les nerfs. Mais je ferais peut-être juste cela, parce que finalement je voudrais que Guava remplace les commons/lang et les communs/io pour moi et il y a encore un long chemin à faire pour cela. –
Je pense que vous pourriez filtrer, puis transformer. Vous n'avez donc pas besoin de tester le cas nul dans votre transformation. –