私はストリングのコレクションを持っていて、それをすべて空であるかヌルであるストリングのコレクションに変換したいと思います。ストリングは削除され、他のストリングはすべて切り取られます。Guava:フィルタと変換を結合する方法は?
私は2つのステップでそれを行うことができます。
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]
しかし、1つのステップに二つの動作を組み合わせるグアバの方法は何ですか?
を、それはそれを行うための最も簡単な方法についてです。よく使われるいくつかの関数が焼き付けられていないことに注意してください。なぜなら 'Strings' APIを要求して、静的な' Function'と 'Predicate'を追加してみましょう。私はメンテナをhttp://code.google.com/p/guava-libraries/issues/listで丁寧に対応してくれました。 – Carl
@Carl私は既にパイプラインでhttp://code.google.com/p/guava-libraries/issues/list?can=2&q=reporter:sean,mostlymagic.comの問題を解決しなければなりません。彼らの神経に乗る。しかし私はちょうどそれをするかもしれません、なぜなら結局私はグアバを私のためにコモンズ/ラングとコモンズ/イオフに置き換えたいと思っています。 –
私はあなたがフィルタリングし、変換できると思います。あなたの変換でnullの場合をテストする必要はありません。 –