2016-12-02 4 views
0

У меня есть классКак заменить существующее значение ArrayList элемента в Java с BeanUtils

class cust{ 
private String name; 
private int id; 

//Getter and setters 
//equals 
//hashcode 
//toString 
} 

В моем главном классе

List<Customer> custList = new ArrayList<Customer>; 

custList имеет уникальные клиенты добавили в него.

Если я добавляю нового клиента в список, мне нужно заменить старого клиента тем же и ID, используя beanutils.

Это мой BeanUtils код

BeanUtils.setProperty("customer", "custList[0]", customer); 

PS: Я переопределен равно & метод Hashcode.

ответ

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); 
    } 
} 
+0

моя реализация только с BeanUtils. Я упростил приведенный выше пример только для лучшего понимания. – Ijaz

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()); 
}