为什么我的数组包含相同的元素?

时间:2017-02-02 15:51:47

标签: java arrays object for-loop arraylist

Java初学者。我正在尝试将ArrayList中的Result对象添加到Array(稍后进行排序)。我知道ArrayLists可能会更好用,但我需要在这个赋值中使用至少一个数组。

在我的代码中,我制作了一个数组的副本,该数组是类Event的一个实例,我正在尝试迭代它并添加来自不同Participant对象的最佳结果。当我运行它时,只是最近添加的参与者的最佳结果被添加到数组(所有索引中的相同对象)。如何添加列表中所有对象的结果?

public void createBestResultArray(Event e) {        
    resultArray = Arrays.copyOf(resultArray,e.getParticipantAmount());

    for(Participant p1 : participantsInEvent){
          for (int i = 0; i < resultArray.length ; i++){
             resultArray[i] = p1.getBestResult(e);
          } 
    }
    System.out.print(Arrays.toString(resultArray));
}

1 个答案:

答案 0 :(得分:2)

您需要更改for循环。假设participantsInEventList,请按如下方式更改循环:

for(int i=0;i<participantsInEvent.size();i++) {
    resultArray[i] = participantsInEvent.get(i).getBestResult(e) ;
}

您问题中的第一个for循环需要来自participantsInEvent的参与者。第二个for循环然后将参与者最佳结果复制到resultArray中的所有索引位置。对每个参与者重复该过程。您自然会留下resultArray,其中包含participantsInEvent集合中最后一位参与者的最佳结果。