按API 9的文件大小android的升序排序文件列表

时间:2017-07-09 20:31:01

标签: java android sorting

我已成功使用以下代码对文件的Arraylist进行排序:

Comparator<File> stringLengthComparator = new Comparator<File>() {
                                        @Override
                                        public int compare(File o1, File o2) {
                                            return Integer.compare((int) (o1.length() / 1000),
                                                    (int) (o2.length() / 1000));
                                        }
                                    };

                                    Collections.sort(flLst, stringLengthComparator);

这会对文件列表进行排序,即flLst,但唯一的问题是上面的代码需要API级别19及以上,而我当前的API最低要求是API级别9.我尝试了以下但我无法交换文件:

for(x=0;x<flLst.size();x++)
                                        val1=flLst.get(x);
                                    for(x=0;x<flLst.size();x++)
                                    {
                                        for(int j=i;j<flLst.size();j++)
                                        {
                                            if(val1.length()>flLst.get(j).length())
                                            {
                                                temp=val1;
                                                val1=flLst.get(j);
                                                flLst.get(j)=temp;  // I get issue here as swapping file variables is not allowed this way
                                            }
                                        }

                                    }

我可以使用API​​级别9的解决方案吗?

3 个答案:

答案 0 :(得分:1)

如文档中所述,整数的compare()方法:

  

以数字方式比较两个int值。返回的值是相同的   将返回的内容:

Integer.valueOf(x).compareTo(Integer.valueOf(y))

因此,在您的情况下,请尝试以下内容,而不是在API级别1中添加:

Comparator<File> stringLengthComparator = new Comparator<File>() {
    @Override
    public int compare(File o1, File o2) {
        return Integer.valueOf((int) (o1.length() / 1000)).compareTo(Integer.valueOf((int) (o2.length() / 1000)));
    }
};

答案 1 :(得分:0)

Comparator<File> stringLengthComparator = new Comparator<File>() {
    @Override
    public int compare(File o1, File o2) {
        return o1.length() - o2.length();
    }
};

你的解决方案只是让事情过于复杂。

答案 2 :(得分:0)

快速轻松地比较按尺寸

        Arrays.sort(fileList, new Comparator<File>() {
            @Override
            public int compare(File f1, File f2) {
                return Long.compare(f1.length(), f2.length());
                // For descending
                // return -Long.compare(f1.length(), f2.length());
            }
        });