Android列表过滤器



我有一个文件对象列表,我想根据一些规则进行过滤,如类型(音频、视频、照片)或捕获日期/时间,或Exif信息(如果是照片)。例如,我可以用一些cicles来做。

有聪明的方法吗?我在某个地方读到,解决方案可能是使用Google Guava中的谓词,但我不明白它是如何工作的。有什么建议吗?感谢

使用Guava谓词可以按照的方式进行操作

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");
    }
}

在apply方法中,您将需要编写代码,该代码将针对所需的文件类型返回true。

相关内容

  • 没有找到相关文章

最新更新