pessoal,
A entrada de dados para minha aplicação é um arquivo excel. Cada linha representa um objeto da classe Component, cuja definição é:
[code]public class Component {
private String id;
private String partNumber;
private String mcId;
private Integer quantity;
public Component() {
}
// getters e setters
// hashcode e equals
// toString()
}[/code]
Não tenho como controlar a geração desse arquivo excel e pode acontecer da lista de Component resultante seja algo assim:
Component [id=1, partNumber=“A”, quantity=5]
Component [id=2, partNumber=“A”, quantity=3]
Component [id=3, partNumber=“B”, quantity=2]
Component [id=4, partNumber=B", quantity=7]
Como que eu consigo garantir que a lista seja algo do tipo
Component [id=2, partNumber=“A”, quantity=8]
Component [id=3, partNumber=“B”, quantity=9]
O método que eu tentei usa para isso é assim:
[code]private void eliminateDuplicateComponent() {
// lista original
List compList = componentList;
// instanciação de mapa para organizar a lista de componentes
Map<String, Component> componentMap = new HashMap<String, Component>();
for (int i = 0; i < compList.size(); i++) {
Component comp = compList.get(i);
if (comp.getPartNumber().equals(
componentMap.containsKey(comp.getPartNumber()))) {
Component c = componentMap.get(comp.getPartNumber());
c.setQuantity(c.getQuantity() + comp.getQuantity());
} else {
componentMap.put(comp.getPartNumber(), comp);
}
}
componentList = new ArrayList<Component>(componentMap.values());
}[/code]
mas o retorno é:
Component [id=2, partNumber=“A”, quantity=3]
Component [id=3, partNumber=“B”, quantity=7]
alguma idéia de como fazer isso?
Grato,
Gustavo