Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/390.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java-按文件大小排序数组列表_Java_Arrays_Arraylist - Fatal编程技术网

Java-按文件大小排序数组列表

Java-按文件大小排序数组列表,java,arrays,arraylist,Java,Arrays,Arraylist,我正在创建一个类,它将接受一个数字,比如10,并创建一个不大于10的文件数组列表。基本上,我的程序扫描一个目录和子目录,并获取所有文件。它不断地将大小最大的文件添加到数组列表中,因此在最后,我将有一个文件大小最大的文件的数组列表 但是,我不知道如何获取ArrayList中文件大小最小的元素。如果ArrayList已完全填充,我需要运行一个检查:如果下一个文件的大小大于列表中最小的文件,我需要从列表中删除较小的文件并添加较大的文件。那么如何检索ArrayList中最小的文件呢 package pk

我正在创建一个类,它将接受一个数字,比如10,并创建一个不大于10的文件数组列表。基本上,我的程序扫描一个目录和子目录,并获取所有文件。它不断地将大小最大的文件添加到数组列表中,因此在最后,我将有一个文件大小最大的文件的数组列表

但是,我不知道如何获取ArrayList中文件大小最小的元素。如果ArrayList已完全填充,我需要运行一个检查:如果下一个文件的大小大于列表中最小的文件,我需要从列表中删除较小的文件并添加较大的文件。那么如何检索ArrayList中最小的文件呢

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