【问题标题】:Why does my array contain the same elements?为什么我的数组包含相同的元素?
【发布时间】:2017-06-19 18:48:08
【问题描述】:

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));
}

【问题讨论】:

  • 如果你能粘贴Event类的代码会更容易分析。什么是participantsInEvent 变量? 最近添加的参与者的最佳结果被添加到数组中你的意思是整个数组只包含一个元素?
  • @Nathalie 我的回答解决了您的问题吗?如果没有,请发表评论以进一步澄清。另请阅读What should I do when someone answers my quesiton。在 Stack Overflow 上这样做被认为是一种很好的礼仪。
  • @CKing 谢谢你的回答!我的问题现在解决了。感谢您提供的信息,我是 Stack Overflow 的新手,所以我不太了解它是如何在这里工作的。

标签: java arrays object for-loop arraylist


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-22
    • 1970-01-01
    • 2021-09-11
    • 2019-08-24
    • 1970-01-01
    相关资源
    最近更新 更多