final Map<String, BigDecimal> keyUnits = new HashMap<String, BigDecimal>();
final List<BaseOBObject> delIndex = new ArrayList<BaseOBObject>();
final Map<String, String> keyStorageId = new HashMap<String, String>();
int i = 0;
for (final BaseOBObject b : l1) {
final StorageDetail sd = (StorageDetail) b;
final String proId = sd.getProduct().getId();
final String attSet = sd.getAttributeSetValue().getId();
final BigDecimal units = sd.getQuantityOnHand();
final String key = proId + "_" + attSet;
if (keyUnits.containsKey(key)) {
final BigDecimal sum = units.add(keyUnits.get(key));
keyUnits.put(key, sum);
delIndex.add(b);
} else {
keyStorageId.put(key, sd.getId());
keyUnits.put(key, units);
}
i++;
}