Ben Strings bir koleksiyonu var ve dizeleri bir koleksiyon dönüştürmek istiyorum tüm boş veya null Strings kaldırılır ve tüm diğerleri budandı.Guava: Filtreyi nasıl birleştirir ve dönüştürür?
ben iki adımda yapabilirsiniz: tek adımda içine iki eylemleri birleştirerek bir Guava yolu
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]
Ama var? Guava ait yaklaşan son sürümü (12.0) olarak
olarak skaffman notlar;: FluentIterable kullanma
, böyle bir şey yapmanın mümkün olmalıdır neden 'Strings' API eklemek talebinde bazı statik' Function' ler ve 'Predicate' işte bu şekilde mantıklı örnekler için - Notunuza gibi bazı oldukça sık kullanılan fonksiyonlar pişmiş değil ilgili? Kullanıcıları http://code.google.com/p/guava-libraries/issues/list adresinde makul bir şekilde yanıtlarken buldum. – Carl
@Carl peki http://code.google.com/p/guava-libraries/issues/list?can=2&q=reporter:sean,mostlymagic.com adresinde boru hattında sorun var. sinirlerini almak için. Ama bunu yapabilirim, çünkü sonunda Guava'yı benim için ortak/lang ve müşterek/ustaları değiştirmek istiyorum ve bunun için hala çok uzun bir yol var. –
Sanırım filtreleyebilir ve dönüştürebilirsiniz. Yani sıfır durumunuzu –