gpt4 book ai didi

java - 无法编写正确的 foreach 语法

转载 作者:行者123 更新时间:2023-11-30 02:05:42 24 4
gpt4 key购买 nike

我正在寻找迭代 arrayList,它有时有一个公共(public)头元素。 arrayList 填充如下:

     //getters, setters
public static void main(String[] args) {

ArrayList<Sports> kayak = new ArrayList<>();
kayak.add(new Sports(sportsmanID[0], 21)
kayak.add(new Sports(sportsmanID[0], 24)
kayak.add(new Sports(sportsmanID[1], 29)

sportsmanID 在我的主方法中声明,声明如下:

     sportsmanID = new int[20];
// bunch of equals

重点是将与每个 sportsmanID 关联的整数相加一次。查看预期结果:

    sportsmanID[0] = 21+24
sportsmanID[1] = 29

当然,我的所有变量都有各自的 getter 和 setter,否则我将无法访问 arrayList。

在尝试了我能想到的每种形式的数组迭代之后,我想尝试使用增强的 for 循环来解决这个问题。从逻辑上讲,它是有意义的:我希望对每个 sportsmanID 执行微积分。然而,由于我正在处理一个对象数组,再加上我的语法非常错误,所以我很挣扎。考虑到 java 是 OOP 语言,它似乎有意义;但我无法理解它。

有人能指出我正确的方向吗?我已经被困在这个问题上有一段时间了,祝福任何能拯救我的人。

最好,提前致谢

最佳答案

我将重写equalshashcode,如下所示:

class Sports {
private int id;
private int value;

@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Sports sports = (Sports) o;
return id == sports.id;
}

@Override
public int hashCode() {
return Objects.hash(id);
}

@Override
public String toString() {
return "Sports{" +
"id=" + id +
", value=" + value +
'}';
}

public int getId() {
return id;
}

public void setId(int id) {
this.id = id;
}

public int getValue() {
return value;
}

public void setValue(int value) {
this.value = value;
}

Sports(int id, int value){
this.id = id;
this.value = value;
}
}

然后创建一个 merge 方法,您可以将 Sports 对象与列表一起传递给该方法。然后,此方法将通过 id 检查要添加的对象是否已存在于列表中,然后只需将它们的值添加在一起,而不必费心添加具有相同 id 的另一个对象。

但是,如果该对象尚不存在,则将该对象添加到列表中。

public static void merge(Sports obj, List<Sports> source){
int index = source.indexOf(obj);
if(index == -1) {
source.add(obj);
return;
}
Sports tempObj = source.get(index);
tempObj.setValue(obj.getValue() + tempObj.getValue());
}

然后只需执行:

ArrayList<Sports> kayak = new ArrayList<>();
merge(new Sports(sportsmanID[0], 21), kayak);
merge(new Sports(sportsmanID[0], 24), kayak);
merge(new Sports(sportsmanID[1], 29), kayak);

皮划艇现在具有以下元素:

[Sports{id=1, value=45}, Sports{id=2, value=29}]

关于java - 无法编写正确的 foreach 语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51444986/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com