定义一个抽象类文件(目录)排序
private abstract class FileComparator implements Comparator<FileInfo> {
@Override
public int compare(FileInfo obj1, FileInfo obj2) {
if (obj1.IsDir == obj2.IsDir) {
return doCompare(obj1, obj2);
}
return obj1.IsDir ? -1 : 1;
}
protected abstract int doCompare(FileInfo obj1, FileInfo obj2);
}
文件的排序一般有四种:
1.按首字母排序,需要支持中文
private Comparator cmpName = new FileComparator() {
@Override
public int doCompare(FileInfo obj1, FileInfo obj2) {
/*RuleBasedCollator collator=(RuleBasedCollator)Collator.getInstance(Locale.CHINA);
return collator.compare(obj1.fileName,obj2.fileName)<0?-1:1;*/
return obj1.fileName.compareToIgnoreCase(obj2.fileName);
}
};
2.按文件大小排序,一般文件夹此时默认是按首字母排序
private Comparator cmpSize = new FileComparator() {
@Override
public int doCompare(FileInfo obj1, FileInfo obj2) {
return (obj1.fileSize - obj2.fileSize)> 0 ? 1 : ((obj1.fileSize - obj2.fileSize)< 0 ? -1 : 0);
}
};
3.按文件的最后修改时间排序,重命名不会改变修改时间
private Comparator cmpDate = new FileComparator() {
@Override
public int doCompare(FileInfo obj1, FileInfo obj2) {
return (obj2.ModifiedDate - obj1.ModifiedDate)> 0 ? 1 : ((obj2.ModifiedDate - obj1.ModifiedDate)< 0 ? -1 : 0);
};
}
4.按文件类型排序,大则按图片、音频、视频等排序,小则按后缀名首字母区分排序,例如aac、bmp、jpg等。
private Comparator cmpType = new FileComparator() {
@Override
public int doCompare(FileInfo obj1, FileInfo obj2) {
int result = Util.getExtFromFileName(obj1.fileName).compareToIgnoreCase(
Util.getExtFromFileName(obj2.fileName));
if (result != 0)
return result;
return Util.getNameFromFileName(obj1.fileName). compareToIgnoreCase(
Util.getNameFromFileName(obj2.fileName));
}
}
分享到:
相关推荐
在IT领域,排序是计算机科学中的基础概念,尤其在数据结构和算法的学习中占据着重要地位。本资源“C/C++数据结构_随机10000个数:排序~8大排序代码集.rar”提供了C/C++实现的八种经典排序算法,适合初学者深入理解和...
数据结构学习笔记排序算法:基数排序数据结构学习笔记排序算法:基数排序数据结构学习笔记排序算法:基数排序数据结构学习笔记排序算法:基数排序数据结构学习笔记排序算法:基数排序数据结构学习笔记排序算法:基数...
在数据分析和报表制作的过程中,排序是一项基础且至关重要的任务。帆软报表作为一款强大的报表工具,提供了多种排序方式,既能通过界面配置实现,也能通过SQL查询语句进行控制。本篇将详细介绍如何在帆软中处理排序...
1、 掌握直接插入排序、折半插入排序、冒泡排序、快速排序和归并排序等排序算 法的思想。 2、 实现直接插入排序、折半插入排序、冒泡排序、快速排序和归并排序等排序算 法的编程应用。 二、 问题描述 实现数据的折半...
在计算机科学领域,排序是处理数据的关键步骤,它将无序的数据序列转化为有序的数据序列,以便于数据分析、检索或进一步的处理。本话题主要探讨六种内部排序算法:直接插入排序、希尔排序、冒泡排序、快速排序、选择...
(2) 待排序元素为整数,排序序列存储在数据文件中,要求排序元素不少于30个; (3) 演示程序开始,以菜单形式让用户选择数据的生成方式和不同的排序方法演示; (4) 排序算法演示要求输出排序花费的时间以便进行...
在给定的标题和描述中,我们关注四种经典的排序算法:快速排序、希尔排序、插入排序和折半排序。这些算法各有特点,适用于不同的场景,下面将详细介绍它们的工作原理、性能以及应用场景。 1. **快速排序(Quick ...
在计算机科学中,排序算法是数据处理的重要组成部分,它们用于将一组数据按照特定顺序进行排列。本主题将详细探讨希尔排序、冒泡排序、堆排序等经典的排序算法,这些都是数据结构与算法学习中的核心内容,尤其对于...
实验7: 内部排序算法比较.doc 实验7: 内部排序算法比较.doc 实验7: 内部排序算法比较.doc
排序列表 android studio 版本 实现了类似与通讯录的效果, 可以多选,如图:排序列表 android studio 版本 实现了类似与通讯录的效果, 可以多选,如图:排序列表 android studio 版本 实现了类似与通讯录的效果...
实验项目:排序方法的实验比较 排序方法是数据处理的最基本和最重要的操作。其目的是将一组“无序”的 ...3. 将上述 Excel 表贴在实验报告中,与作适当分析或说明。原始 Excel 表与实 验一并提交。
* -o:输出文件,将排序输出写到输出文件中而不是标准输出,如果输出文件是输入文件之一,Sort 先将该文件的内容写入一个临时文件,然后再排序和写输出结果。 改变缺省排序规则的选项包括: * -d:按字典顺序排序...
在计算机科学中,排序算法是数据处理的重要组成部分,尤其是在大数据处理和数据分析中。本文将深入探讨Java编程语言中实现的七种主要排序算法:直接插入排序、希尔排序、选择排序、堆排序、冒泡排序、快速排序以及...
本文将详细探讨十种经典的排序算法在C++中的实现,分别是冒泡排序、桶排序、计数排序、堆排序、插入排序、合并排序、快速排序、基数排序、选择排序和希尔排序。 1. **冒泡排序**:冒泡排序是最简单的排序算法之一,...
在ASP.NET 2.0中操作数据:排序自定义分页数据(源码)
7. 计数排序(Counting Sort)、桶排序(Bucket Sort)和基数排序(Radix Sort):这三种属于非比较型排序算法,适用于特定场景,例如元素范围较小或者可以按位处理的情况,它们可以在线性时间内完成排序。...
排序算法java版,速度排行:冒泡排序、简单选择排序、直接插入排序、折半插入排序、希尔排序、堆排序、归并排序、快速排序.mht
在排序技术中,有三大基本类别:交换类排序、插入类排序和选择类排序。 1. **交换类排序**: - 冒泡排序:是最简单的排序方法之一,通过不断交换相邻的不正确顺序元素,逐步将最大(或最小)的元素“冒”到序列...