Java 按大小对文件列表进行排序花费了太多时间
文件夹的排序列表工作正常,但这需要花费太多的时间,并使手机冻结,直到该方法完成。 这是我用来对文件列表排序的方法Java 按大小对文件列表进行排序花费了太多时间,java,android,sorting,Java,Android,Sorting,文件夹的排序列表工作正常,但这需要花费太多的时间,并使手机冻结,直到该方法完成。 这是我用来对文件列表排序的方法 public static void sortFromLargeToSmall(List<Folders> foldersList, SDCardListViewAdapter sdCardListViewAdapter) { List<File> files = new ArrayList<>(); for (Folders fo
public static void sortFromLargeToSmall(List<Folders> foldersList, SDCardListViewAdapter sdCardListViewAdapter) {
List<File> files = new ArrayList<>();
for (Folders folder: foldersList)
files.add(folder.getFile());
Comparator<File> sizeFileComparator = SizeFileComparator.SIZE_SUMDIR_REVERSE;
Collections.sort(files, sizeFileComparator);
sdCardListViewAdapter.clear();
for(File file: files)
if(file.isDirectory())
sdCardListViewAdapter.add(new Folders(R.drawable.ic_folders, file.getName(), file));
else
sdCardListViewAdapter.add(new Folders(R.drawable.ic_file, file.getName(), file));
}
public static void sortFromLargeToSmall(列表文件夹列表,SDCardListViewAdapter SDCardListViewAdapter){
列表文件=新的ArrayList();
用于(文件夹:foldersList)
添加(folder.getFile());
比较器sizeFileComparator=sizeFileComparator.SIZE\u SUMDIR\u REVERSE;
Collections.sort(文件、sizeFileComparator);
sdCardListViewAdapter.clear();
用于(文件:文件)
if(file.isDirectory())
添加(新文件夹(R.drawable.ic_Folders,file.getName(),file));
其他的
添加(新文件夹(R.drawable.ic_文件,file.getName(),file));
}
这是文件夹对象构造函数
public Folders(int imageView, String folderName, File file) {
this.folderIcon = imageView;
this.folderName = folderName;
this.file = file;
this.isSelected = false;
foldersPath = new ArrayList<>();
foldersName = new ArrayList<>();
}
公用文件夹(int-imageView、字符串folderName、文件){
this.folderIcon=imageView;
this.folderName=folderName;
this.file=文件;
this.isSelected=false;
foldersPath=newarraylist();
foldersName=newarraylist();
}
有没有一种方法可以使该方法非常快速,并且不会使手机冻结使其非常快速的方法非常广泛,但是要防止UI线程被阻塞太久,可以在后台线程上运行此方法。使用IDE的性能分析工具,甚至使用
日志
语句,要确定您的时间在代码中的确切位置,请直接对foldersList排序。不要使用中间列表。此外,您没有发布比较器代码。您也不必创建新文件夹。向Folders类添加一个大小变量,将其用于comparator。