java - 如何比较保存在 ArrayList 中的对象中的字符串,然后添加这些字符串的值(如果它们彼此相等)
问题描述
如何比较保存在 ArrayList 中的对象中的字符串,然后添加这些字符串的值(如果它们彼此相等)?
我了解如何检查 ifStringX == StringY
或StringX.equals(StringY)
,但我不明白如何比较 an 中的字符串ArrayList
,更不用说如何添加 String 对象中保存的双精度值(仅当该字符串相等时)。
示例 类 BaseBallTeam 有两个属性;
- 字符串团队成员,例如 Kat
- 双本垒打,例如 2.0
我想把所有 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);
}
}
我的代码提供了所有团队成员的累积频率,而不是将两个单独的分数相加
解决方案
您应该首先查看有哪些团队成员,然后您应该计算他们的本垒打:
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);
推荐阅读
- android - 在 AsyncTask InputStream 中得到 android.os.NetworkOnMainThreadException
- android - Android 应用内更新返回缓存的应用更新信息
- c# - 如何刷新 Google OAuth2 AccessToken
- php - 存储查询结果以供以后在会话或临时表中使用或一一查询?
- ibm-mobilefirst - JSON 日期属性在存储到 JSONStore 后被解析为本地时区
- android - 如何更新当前不在屏幕上焦点的回收器视图的特定位置的视图?
- informix - Informix 今日运算符
- scala - 什么(确切地说)是“头等舱”模块?
- r - 动态替换字符串中的特定字符并将它们分配给新变量
- java - Spring Boot 应用程序中 Tomcat 连接器上的 maxParamterCount 属性