在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;
}