美文网首页Android技术知识Android开发经验谈安卓开发博客
「算法」Java 文件排序(名称、大小、时间)

「算法」Java 文件排序(名称、大小、时间)

作者: dongbingliu | 来源:发表于2018-07-04 16:39 被阅读41次
排序

Android 文件浏览器中涉及到文件按照文件名称、文件大小、修改时间 ,记录其排序算法如下,方便日后简单修改参考使用:

/**
 * sort file
 *
 * @param fileList   // file list
 * @param sortMethod 「名称、大小、时间」
 * @param MA 「Context」
 * @return List<File>
 */
public static List<File> sortFile(List<File> fileList, final String sortMethod, final CommonActivity MA) {

    Collections.sort(fileList, new Comparator<File>() {
        @Override
        public int compare(File object1, File object2) {
            return compareFile(object1, object2, sortMethod, MA);
        }
    });

    return fileList;
}

/**
 * A local file, mount the directory to sort the files to achieve CNcomment:
 * 本地文件,挂载目录文件排序实现
 *
 * @param object1
 * @param object2
 * @param sortMethod
 * @param MA
 * @return
 */
public static int compareFile(File object1, File object2,
                              String sortMethod, CommonActivity MA) {
    mx = MA;
    if (sortMethod.equals(mx.getResources().getString(R.string.file_name))) {
        return compareByName(object1, object2);
    } else if (sortMethod.equals(mx.getResources().getString(
            R.string.file_size))) {
        int len = compareBySize(object1.length(), object2.length());
        // the same size ,sort by name
        if (len == 0) {
            return compareByName(object1, object2);
        } else {
            return compareBySize(object1.length(), object2.length());
        }
    } else if (sortMethod.equals(mx.getResources().getString(
            R.string.update_time))) {
        int len = compareByDate(object1.lastModified(),
                object2.lastModified());
        // the same data ,sort by name
        if (len == 0) {
            return compareByName(object1, object2);
        } else {
            return compareByDate(object1.lastModified(),
                    object2.lastModified());
        }
    }
    return 0;
}
/**
 * sort according to file name
 *
 * @param object1
 * @param object2
 * @return
 */
private static int compareByName(File object1, File object2) {
    String objectName1 = object1.getName().toLowerCase();
    String objectName2 = object2.getName().toLowerCase();
    int result = objectName1.compareTo(objectName2);
    if (result == 0) {
        return 0;
    } else if (result < 0) {
        return -1;
    } else {
        return 1;
    }
}

/**
 * sort according to file size
 *
 * @param object1
 * @param object2
 * @return
 */
private static int compareBySize(long object1, long object2) {
    long diff = object1 - object2;
    if (diff > 0) {

        return 1;
    } else if (diff == 0) {

        return 0;
    } else {

        return -1;
    }
}

/**
 * file sorted by date modified
 *
 * @param object1
 * @param object2
 * @return
 */
public static int compareByDate(long object1, long object2) {
    long diff = object1 - object2;
    if (diff > 0) {
        return 1;
    } else if (diff == 0) {
        return 0;
    } else {
        return -1;
    }
}

相关文章

  • 「算法」Java 文件排序(名称、大小、时间)

    Android 文件浏览器中涉及到文件按照文件名称、文件大小、修改时间 ,记录其排序算法如下,方便日后简单修改参考使用:

  • 数据结构&算法(一)

    一、Java实现快速排序算法 二、Java实现折半插入排序算法 三、Java实现冒泡排序算法

  • 2018-07-05 每天一个Linux命令 - ls

    常用到的用法: ls -l # 按照文件名称排序显示很多文件信息 ls -hl #同上,文件显示信息多了文件大小...

  • 排序算法(四) 希尔排序(插入排序的进化)

    参考Java排序算法(四):希尔排序常见排序算法 - 希尔排序 (Shell Sort) 希尔排序算法是按其设计者...

  • java 实现排序算法之「插入排序」

    java 实现排序算法系列 这是 Java 实现排序算法的第三篇文章——插入排序算法。插入排序可以说成是「一类」简...

  • 第4章 结构体

    1、排序 算法分析 用结构体存储,并进行排序 时间复杂度 Java 代码 2、成绩排序 算法分析 先对分数从小到大...

  • java排序方法资料

    java排序,效率高的是哪种排序方法 JAVA快速排序(高效) java中常用的几种排序算法 相关代码: /* *...

  • JAVA排序算法总结

    通过对排序算法的总结,更深一步去了解JAVA。 1.时间复杂度为O(n*n)的排序算法 冒泡排序 选择排序 插入排...

  • 排序算法-堆排序

    参考: Java排序算法(五):堆排序 【算法与数据结构】图说堆排序 【数据结构】排序算法:希尔、归并、快速、堆排...

  • 常见排序算法总结 -- java实现

    常见排序算法总结 -- java实现 排序算法可以分为两大类: 非线性时间比较类排序:通过比较来决定元素间的相对次...

网友评论

  • dongbingliu:文件夹比较大小按照文件名排序,优先文件件排在前面;
  • dongbingliu:排序使用Java提供排序方法sort();

本文标题:「算法」Java 文件排序(名称、大小、时间)

本文链接:https://www.haomeiwen.com/subject/tmaeuftx.html