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();
}
類似的事情。(由內存編寫的代碼,可能有錯誤并且缺乏數據類型等驗證)
添加回答
舉報