对象匹配,增加并添加到列表中

时间:2018-01-31 13:57:58

标签: java java-8

我有一种包含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呢?

1 个答案:

答案 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++;
      }
  }