我有课
class cust{
private String name;
private int id;
//Getter and setters
//equals
//hashcode
//toString
}
在我的主要班级
List<Customer> custList = new ArrayList<Customer>;
custList中添加了唯一的客户。
如果我将新客户添加到列表中,我需要使用beanutils替换旧客户的ID和ID。
这是我的Beanutils代码
BeanUtils.setProperty("customer", "custList[0]", customer);
PS:我有覆盖等于&amp;哈希码方法。
答案 0 :(得分:0)
为什么要使用BeanUtils?
为什么不在列表中找到该元素并覆盖它?
public void addOrReplace(List<Customer> customers, Customer customer) {
int index = -1;
for(int k = 0; index != -1 && k < customers.size(); k++) {
if(customers.get(k).getId() == customer.getId()) {
index = k;
}
}
if(index == -1) {
customers.add(customer);
} else {
customers.set(index, customer);
}
}
答案 1 :(得分:0)
我同意BretC答案的要点,但我的实施更简洁,原始列表保持不变:
public List<Customer> addOrReplace(List<Customer> customers, Customer customer) {
return customers.stream()
.map(c -> c.getId() == customer.getId() ? customer : c)
.collect(Collectors.toList());
}