46
我有一個字符串的集合,我想將它轉換爲一個字符串集合都是空的或空的字符串被刪除,所有其他都被修剪。番石榴:如何結合過濾和變換?
我可以做的兩個步驟:
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]
但有兩個動作組合成一個步驟的番石榴方式?
爲skaffman指出,這是對最簡單的辦法做到這一點;至於你關於一些非常用的函數沒有被烘焙的提示 - 爲什麼不要求`Strings` api爲這樣的明智例子添加一些靜態的`Function`和`Predicate`?我在http://code.google.com/p/guava-libraries/issues/list上找到了維護人員的合理響應。 – Carl 2010-11-25 17:06:33
@Carl以及我已經在管道中發佈了http://code.google.com/p/guava-libraries/issues/list?can=2&q=reporter:sean,mostlymagic.com,我不想要讓他們緊張起來。但是我可能會這樣做,因爲最終我希望Guava能夠替代commons/lang和commons/io,而且爲此我們還有很長的路要走。 – 2010-11-25 17:17:43