我有一种包含id和points信息的对象。
我有一个该对象的列表。我需要添加每个新ID,如果有任何旧ID输入我需要将1添加到旧条目的点。然后添加到列表中。
这是我的pojo
public class Salary {
int id;
int points;
public Salary(int id, int points) {
this.id = id;
this.points = points;
}
// getters and setters
}
情况如下
class info{
public static void main(String[] args) {
List<Salary> salaries = new ArrayList<>();
salaries.add(new Salary(1,100));
salaries.add(new Salary(2,200));
Salary newSalary = new Salary(1,200);
}
}
由于id相同,我需要100到101并更新列表,我怎么能用java 8呢?
答案 0 :(得分:2)
在Salary类中,您应该按如下方式实现equals和hashcode:
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + id;
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Salary other = (Salary) obj;
if (id != other.id)
return false;
return true;
}
并在您的main方法中添加:
Salary newSalary = new Salary(1,200);
for(Salary s: salaries){
if(s.equals(newSalary)){
s.points++;
}
}