Java-按文件大小排序数组列表
我正在创建一个类,它将接受一个数字,比如10,并创建一个不大于10的文件数组列表。基本上,我的程序扫描一个目录和子目录,并获取所有文件。它不断地将大小最大的文件添加到数组列表中,因此在最后,我将有一个文件大小最大的文件的数组列表 但是,我不知道如何获取ArrayList中文件大小最小的元素。如果ArrayList已完全填充,我需要运行一个检查:如果下一个文件的大小大于列表中最小的文件,我需要从列表中删除较小的文件并添加较大的文件。那么如何检索ArrayList中最小的文件呢Java-按文件大小排序数组列表,java,arrays,arraylist,Java,Arrays,Arraylist,我正在创建一个类,它将接受一个数字,比如10,并创建一个不大于10的文件数组列表。基本上,我的程序扫描一个目录和子目录,并获取所有文件。它不断地将大小最大的文件添加到数组列表中,因此在最后,我将有一个文件大小最大的文件的数组列表 但是,我不知道如何获取ArrayList中文件大小最小的元素。如果ArrayList已完全填充,我需要运行一个检查:如果下一个文件的大小大于列表中最小的文件,我需要从列表中删除较小的文件并添加较大的文件。那么如何检索ArrayList中最小的文件呢 package pk
package pkgfinal;
import java.io.File;
import java.util.ArrayList;
/**
*
* @author Sameer Anand
*
*/
public class TopN {
ArrayList<File> fileNames;
int numberOfObjects;
public TopN(int numberOfObjects) {
numberOfObjects = this.numberOfObjects;
fileNames = new ArrayList<>(numberOfObjects);
}
public void add(File f) {
// Add The File To The Array List
// If The List is Not Fully Populated, Add The File To The List
// Otherwise, Check The Length of The File Coming In.
// If The Length of The File Coming In Is Greater Than The Size
// Of The Smallest File In The List, Delete The Old File & Add
// in The New File
if (fileNames.size() < numberOfObjects) {
fileNames.add(f);
} else {
// Do The Check
}
}
}
package-pkgfinal;
导入java.io.File;
导入java.util.ArrayList;
/**
*
*@作者Sameer Anand
*
*/
公共类TopN{
ArrayList文件名;
int numberOfObjects;
公共TopN(int numberOfObjects){
numberOfObjects=this.numberOfObjects;
fileNames=newarraylist(numberOfObjects);
}
公共作废添加(文件f){
//将文件添加到数组列表中
//如果列表未完全填充,请将文件添加到列表中
//否则,请检查传入文件的长度。
//如果传入的文件的长度大于
//对于列表中最小的文件,删除旧文件并添加
//在新文件中
if(fileNames.size()
我不会为此使用ArrayList。您需要始终对文件名集合进行排序。一个带有合适比较器的树集更好。使用两个变量来跟踪最低值及其当前位置;每次添加新文件时,请检查新文件是否小于当前最小文件,如果小于,请将文件大小及其位置保存为新的最小值
或者在创建列表时,将其从最小到最大或从最大到最小排序,以便始终知道最小文件的位置。只需在ArrayList中循环,查看哪个文件最小!(如果对ArrayList进行排序,速度会更快,但当对象数量相当小时,可能不会有太大的差别)
fileNames.get(i).length() //returns the filesize of the i'th file in the ArrayList