3 回答

TA贡献1829条经验 获得超13个赞
使用 Builder 进行 getter 和 setter
public class LoanAccount {
private String id;
private Integer numberOfInstallments;
// add other properties
public String getId() {
return id;
}
public LoanAccount setId(String id) {
this.id = id;
return this;
}
public Integer getNumberOfInstallments() {
return numberOfInstallments;
}
public LoanAccount setNumberOfInstallments(Integer numberOfInstallments) {
this.numberOfInstallments = numberOfInstallments;
return this;
}
使用这个作为更新方法
public LoanAccount update(LoanAccount loanAccount) {
return bank.getLoanAccounts()
.stream()
.filter(la -> la.getId().equals(loanAccount.getId()))
.findFirst().orElseThrow(IllegalArgumentException::new)
.setCreationDate(loanAccount.getCreationDate())
.setLoanAmount(loanAccount.getLoanAmount())
.setNumberOfInstallments(loanAccount.getNumberOfInstallments())
.setType(loanAccount.getType());
}

TA贡献1853条经验 获得超9个赞
你使用什么样的持久层?
为什么需要遍历所有银行账户?
您是否从存储库中获取了所有帐户并在服务层上循环?如果是这样为什么?
为什么不从存储库中获取相应的单个记录并更新?
为什么不使用查找和更新记录而不是使用以上几点呢?
这些问题也许会给你一个想法。如果你回答的话!!!如果没有让我们更深入地讨论

TA贡献1806条经验 获得超8个赞
您可以使用 HashMap,其中 TKey 是 LoanAccount.id 的类型。然后调用loanAccounts.put(id, object) This 将更新对象(如果已有 Id),如果没有则添加新对象。
这是一种廉价、肮脏的方式。另一种方法是让您的 LoanAccount 类实现Comparable并在compareTo()方法中进行基于 id 的比较。做同样的事情来覆盖你的equals(),你应该准备好了。
@Override
public boolean equals(object obj) {
if (obj == null) return false;
return ((LoanAccount)obj).getId() == this.getId();
}
类似的事情。(由内存编写的代码,可能有错误并且缺乏数据类型等验证)
添加回答
举报