0
我有一個文件對象列表,我希望按照類似規則(音頻,視頻,照片)或捕捉日期/時間或Exif信息(照片的情況下)等規則進行過濾。例如,我可以用一些Cicle來做。Android列表過濾器
有一個聰明的方法來做到這一點?我在某處讀到解決方案可能是使用Google Guava的Predicates,但我無法理解它是如何工作的。任何建議?由於
我有一個文件對象列表,我希望按照類似規則(音頻,視頻,照片)或捕捉日期/時間或Exif信息(照片的情況下)等規則進行過濾。例如,我可以用一些Cicle來做。Android列表過濾器
有一個聰明的方法來做到這一點?我在某處讀到解決方案可能是使用Google Guava的Predicates,但我無法理解它是如何工作的。任何建議?由於
使用番石榴謂詞你會做沿着
import java.io.File;
import java.util.Collection;
import java.util.List;
import javax.annotation.Nullable;
import com.google.common.base.Predicate;
import com.google.common.collect.Collections2;
import com.google.common.io.Files;
public class FileFiltering {
public static void main(String[] args) {
List<File> files = getFiles();
Collection<File> audioFiles = Collections2.filter(files,
new AudioPredicate());
Collection<File> videoFiles = Collections2.filter(files,
new VideoPredicate());
}
private static List<File> getFiles() {
// TODO Auto-generated method stub
return null;
}
}
class AudioPredicate implements Predicate<File> {
@Override
public boolean apply(@Nullable File file) {
return Files.getFileExtension(file.getName()).equalsIgnoreCase("mp3");
}
}
class VideoPredicate implements Predicate<File> {
@Override
public boolean apply(@Nullable File file) {
return Files.getFileExtension(file.getName()).equalsIgnoreCase("mkv");
}
}
的線路中的應用方法()你需要編寫代碼,將返回真爲你想要的那種文件的東西。
感謝您的回答,我怎樣才能同時結合多個謂詞? – phcaze 2013-02-11 11:21:58
'com.google.common.base.Predicates'允許將多個謂詞與'或'和'和'結合在一起。 – Pierre 2013-02-11 15:37:40
我在謂詞上得到了這個錯誤:'java.lang.NoClassDefFoundError:' – phcaze 2013-02-12 14:22:55