首页 > 解决方案 > 如何比较保存在 ArrayList 中的对象中的字符串,然后添加这些字符串的值(如果它们彼此相等)

问题描述

如何比较保存在 ArrayList 中的对象中的字符串,然后添加这些字符串的值(如果它们彼此相等)?

我了解如何检查 ifStringX == StringYStringX.equals(StringY),但我不明白如何比较 an 中的字符串ArrayList,更不用说如何添加 String 对象中保存的双精度值(仅当该字符串相等时)。

示例 类 BaseBallTeam 有两个属性;

我想把所有 Kats(string) 的 homeRuns(double) 加起来。以及所有麦克风等制作的所有 homeRuns(double)。

这是我的代码:

ArrayList<BaseBallTeam> list = new ArrayList<>();
double totalRuns = 0;
for(int i = 0; i<list.size();i++){
   for(int j = 1; j<list.size();j++){        
    if(list.get(i).getTeamMember().equals(list.get(j).getTeamMember())){
       totalRuns += list.get(j).getHomeRuns() +list.get(i).getHomeRuns();
       System.out.println("Amount of " + list.get(i).getTeamMember() + "s hit " + totalRuns"home runs);
   }
}                   

我的代码提供了所有团队成员的累积频率,而不是将两个单独的分数相加

标签: javastringobjectarraylist

解决方案


您应该首先查看有哪些团队成员,然后您应该计算他们的本垒打:

    ArrayList<BaseBallTeam> list = new ArrayList<>();
    // fill the list
    ArrayList<String> teamMembers = new ArrayList<>();
    for (int i = 0; i < list.size(); i++) {
        if (!teamMembers.contains(list.get(i).getTeamMember())) {
            teamMembers.add(list.get(i).getTeamMember());
        }
    }

    double totalRuns = 0;
    for (int i = 0; i < teamMembers.size(); i++) {
        double runs = 0;
        for (int j = 0; j < list.size(); j++) {
            if (list.get(j).getTeamMember().equals(teamMembers.get(i))) {
                runs += list.get(j).getHomeRuns();
            }
        }
        System.out.println("Amount of " + teamMembers.get(i) + "s hit " + runs + " home runs");
        totalRuns += runs;
    }
    System.out.println("Total homeruns " + totalRuns);

推荐阅读