Android列表过滤器

phc*_*aze 2 android filtering list guava predicates

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

有一种聪明的方法吗?我在某地读到解决方案可能是使用Google Guava的Predicates,但我无法理解它是如何工作的.有什么建议吗?谢谢

art*_*ved 5

使用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");
    }
}
Run Code Online (Sandbox Code Playgroud)

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