这是我的代码,它有效!但我希望能够根据名称,大小,修改日期等对文件列表进行排序
import java.io.File;
import org.apache.commons.io.FileUtils;
public class StartingPoint {
public static void main(String[] args) {
File file = new File(
"/home/t/lectures");
File[] files = file.listFiles();
for (File f : files) {
System.out.println("File : " + f.getName() + " ["
+ FileUtils.byteCountToDisplaySize(f.length()) + "]");
}
}
}
Arrays.sort( files, new Comparator<File>() {
public int compare( File a, File b ) {
// do your comparison here returning -1 if a is before b, 0 if same, 1 if a is after b
}
} );
您可以定义许多不同的Comparator
类来进行不同的比较,例如:
public class FileNameComparator implements Comparator<File> {
public int compare( File a, File b ) {
return a.getName().compareTo( b.getName() );
}
}
public class FileSizeComparator implements Comparator<File> {
public int compare( File a, File b ) {
int aSize = a.getSize();
int bSize = b.getSize();
if ( aSize == bSize ) {
return 0;
}
else {
return Integer.compare(aSize, bSize);
}
}
}
...
然后,您只需将它们换出:
Arrays.sort( files, new FileNameComparator() );
要么
Arrays.sort( files, new FileSizeComparator() );
问题内容: 我使用和在目录中显示文件名。但是他们无序。如何分类?语言是C。 问题答案: 在C语言中对事物进行排序的惯用方式是使用该函数。为此,最好安排所有文件名收集到一个指针数组中,然后对数组进行排序。 这虽然不太困难,但是确实需要一些动态数组管理,或者您需要引入静态限制(最大文件名长度,最大文件数)。
我想在RecycerView中对项目进行排序。我的用户名是20ABC1、20ABC2、…、20ABC10、…等等。 我尝试了相关问题的答案,其中一个是: 谢谢:)
问题内容: 我有一堂水果课。我正在创建此类的列表,并将每个水果添加到列表中。我想根据水果名称的顺序对该列表进行排序。 我正在使用for循环创建它的列表 我需要使用列表中每个对象的水果名称对该arrayList进行排序 问题答案: 使用这样的: 现在,你的水果清单将基于进行排序。
问题内容: 我们如何排序? 我想根据中的值进行排序。 问题答案: 你是否必须使用HashMap?如果只需要Map Interface,请使用TreeMap 如果要通过比较HashMap中的值进行排序。你必须编写代码才能执行此操作,如果要执行此操作,则可以对HashMap的值进行排序: 如果你想经常访问此排序列表,则可以将元素插入到中,尽管集合和列表的语义有些不同。
问题内容: 我不能在数据库中执行ORDER BY 问题答案: 将数据从ResultSet中移到所需的任何对象表示形式中,然后对数据进行排序,就像此时的其他任何数据一样。 如果您使用Collections.Sort对复杂对象进行排序,则需要实现Comparator。
问题内容: 如何按对象的字段对对象的JSONArray排序? 输入: 所需的输出(按“名称”字段排序): 问题答案: 试试这个: 排序后的JSONArray现在存储在对象中。