Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.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 当再次添加信息时,如何向以2个ID为参数的对象添加信息,而不会过度写入信息?_Java_Loops_Object_Arraylist - Fatal编程技术网

Java 当再次添加信息时,如何向以2个ID为参数的对象添加信息,而不会过度写入信息?

Java 当再次添加信息时,如何向以2个ID为参数的对象添加信息,而不会过度写入信息?,java,loops,object,arraylist,Java,Loops,Object,Arraylist,因此,我将从一个简短的解释开始,这样我的代码才有意义。我们正在通过扫描仪读取一个文件,并将每个“N”行添加到一个携带这些行的“块”(基本上是对象“块”中的数组列表)。 然后将每个块随机添加到一个“DataNode”中,该“DataNode”具有一个“int MachineID”和一个“int NodeID”(一台机器可以容纳多个数据节点,而数据节点只是携带“块”数组列表的对象)。 我编写了一个方法,该方法在将文件的位置作为参数后读取文件,然后开始用行填充找到的行,然后将块添加到节点。但是,我发现

因此,我将从一个简短的解释开始,这样我的代码才有意义。我们正在通过扫描仪读取一个文件,并将每个“N”行添加到一个携带这些行的“块”(基本上是对象“块”中的数组列表)。 然后将每个块随机添加到一个“DataNode”中,该“DataNode”具有一个“int MachineID”和一个“int NodeID”(一台机器可以容纳多个数据节点,而数据节点只是携带“块”数组列表的对象)。 我编写了一个方法,该方法在将文件的位置作为参数后读取文件,然后开始用行填充找到的行,然后将块添加到节点。但是,我发现每次需要添加块时,我的代码都会创建一个具有确定机器ID和节点ID的新节点(块随机添加到机器和节点中),但一个节点可能包含2个块,但我编写的(代码),每次我要将块添加到节点的数组列表时,都会覆盖先前创建的节点

这是我的代码:(这是一个更大问题的一部分,所以希望这是有意义的)

public void createFile(String fileNameOriginal,String fileNameDFS)抛出FileNotFoundException{
this.fileNameOriginal=fileNameOriginal;
this.fileNameDFS=fileNameDFS;
int随机机;
int随机节点;
文件f=新文件(文件名原件);
扫描仪读取文件=新扫描仪(f);
while(readFile.hasNextLine()){
//定位块要添加到的节点的ID
随机机器=(int)(Math.random()*机器);
randomNode=(int)(Math.random()*节点);
块b=新块(随机机器、随机节点);
//每个块的行数在类中作为参数确定

对于(int i=0;i问题就在你的评论下面,你说有问题——你每次都在创建一个新的数据节点,然后将块添加到新节点。如果你想将块附加到现有节点上,你需要使用你创建的
randomNode
索引从现有节点列表中提取数据节点nodes@Easton Bornemeier你建议我怎么做?节点数和机器数由用户在测试类中作为参数输入。我本来打算创建一个forloop来创建所有节点,但后来我意识到循环覆盖了除最后一个节点之外的所有内容……你建议如何处理这件事(请记住,我可以根据需要向任何类添加任何方法)。根据您对机器类的描述,您的机器类应该有一个DataNodes的ArrayList,对吗?如果您要将块随机分配给机器和节点,我会在处理块之前创建所有节点。如果您在创建和添加该ArrayList时遇到问题,我会发布一个单独的问题问题,从整体上说,我认为问题不在于向节点添加块,而在于整个类结构的设置。根据我的教授,没有机器类。老实说,我不知道该怎么办……我走到了死胡同,我逐字逐句地关注问题和老师的助手。谢谢你帮我,我真的很感激。
public void createFile(String fileNameOriginal, String fileNameDFS  ) throws FileNotFoundException {
    this.fileNameOriginal = fileNameOriginal;
    this.fileNameDFS = fileNameDFS;
    int randomMachine;
    int randomNode;

    File f = new File(fileNameOriginal);
    Scanner readFile = new Scanner(f);

    while(readFile.hasNextLine()){
        //IDs locating the node the block is going to be added to
        randomMachine = (int)(Math.random()*machines);
        randomNode = (int)(Math.random()*nodes);

        Block b = new Block(randomMachine, randomNode);
        // number of lines per block are decided in the class as parameter
        for(int i = 0; i <= n; i++){
            b.add(readFile.nextLine());
        }
        // this here is my problem... everything is over written... :'(
        DataNode N = new DataNode(randomMachine, randomNode);
        N.addToNode(b);
    }


}