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