Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在android中按大小排列文件列表_Android_List_File_Size - Fatal编程技术网

在android中按大小排列文件列表

在android中按大小排列文件列表,android,list,file,size,Android,List,File,Size,我有一个代码,可以将目录中的所有文件放入一个列表中。现在我想按大小对列表进行排序,从最小到最大 是否有比编写自己的代码更有效的函数或其他功能?如果什么都不存在,有没有一个有效的代码你可以告诉我 我的代码是: private List<File> getListFiles(File parentDir) { ArrayList<File> inFiles = new ArrayList<>(); File[] files = pa

我有一个代码,可以将目录中的所有文件放入一个列表中。现在我想按大小对列表进行排序,从最小到最大

是否有比编写自己的代码更有效的函数或其他功能?如果什么都不存在,有没有一个有效的代码你可以告诉我

我的代码是:

private List<File> getListFiles(File parentDir) {
        ArrayList<File> inFiles = new ArrayList<>();
        File[] files = parentDir.listFiles();
        for (File file : files) {
            if (!file.getName().endsWith(".nomedia")) {
                inFiles.add(file);
            }
        }

        //Here I should write my sorting code


        return inFiles;
    }
私有列表getListFiles(文件parentDir){ ArrayList inFiles=新的ArrayList(); File[]files=parentDir.listFiles(); 用于(文件:文件){ 如果(!file.getName().endsWith(“.nomedia”)){ inFiles.add(文件); } } //在这里我应该写我的排序代码 返回填充; }
您可以从中使用SizeFileComparator


它使用起来非常简单,还提供了许多其他有用的类和方法。

我认为实现这一点的一种方法是创建一个文件及其各自大小的Hashmap和另一个仅包含文件大小的Arraylist

Hashmap myHashmap = new Hashmap<long, File>;
然后可以使用ArrayList的排序方法对文件大小进行排序:

myFilesizeArrayList.sort();
然后使用hashmap将已排序的filesize ArrayList转换回排序文件ArrayList:

inFiles.clear();
for (long size : myFilesizeArrayList) {
    inFiles.add(myHashmap.get(size));
}
这将为您提供按大小排序的文件列表

尽管如此,我不知道这是否比编写自己的简单排序算法更有效。我倾向于只编写自己的代码,因为这是一项相对琐碎的任务。

此代码有效。 在将文件数组加载到列表之前,我使用Array.sort对其进行排序

我必须在比较器上寻找一些例子,因为我从未使用过

private ArrayList<File> getListFiles(File parentDir) {
        ArrayList<File> inFiles = new ArrayList<>();
        File[] files = parentDir.listFiles();

        //Added Arrays.sort
        Arrays.sort(files, new Comparator<File>(){
            public int compare(File f1, File f2)
            {
                return Long.valueOf(f1.length()).compareTo(f2.length());
            } });


        for (File file : files) {
            if (!file.getName().endsWith(".nomedia")) {
                inFiles.add(file);
            }
        }
        return inFiles;
    }
private ArrayList getListFiles(文件parentDir){
ArrayList inFiles=新的ArrayList();
File[]files=parentDir.listFiles();
//添加了数组.sort
Arrays.sort(文件,新的Comparator(){
公共整数比较(文件f1、文件f2)
{
返回Long.valueOf(f1.length()).compareTo(f2.length());
} });
用于(文件:文件){
如果(!file.getName().endsWith(“.nomedia”)){
inFiles.add(文件);
}
}
返回填充;
}

您也可以将
比较器
传递给
分拣数据集

private ArrayList<File> getListFiles(File parentDir) {
        ArrayList<File> inFiles = new ArrayList<>();
        File[] files = parentDir.listFiles();

        //Added Arrays.sort
        Arrays.sort(files, new Comparator<File>(){
            public int compare(File f1, File f2)
            {
                return Long.valueOf(f1.length()).compareTo(f2.length());
            } });


        for (File file : files) {
            if (!file.getName().endsWith(".nomedia")) {
                inFiles.add(file);
            }
        }
        return inFiles;
    }