- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
/*
* Для операций UPDATE идентификаторы объектов должны быть уникальными.
*/
HashMap<Long,Boolean> filterUniqueChangeObjects = new HashMap<Long, Boolean>();
for (RepositoryObject repositoryObject : resultRepositiry) {
if(repositoryObject.getOperationType() == OperationType.UPDATE) {
if(filterUniqueChangeObjects.containsKey(repositoryObject.getObjectId())) {
log.warn("Объект с идентификатором уже присутствует в обработке UPDATE " + repositoryObject.getObjectId());
} else {
resultUniqueRepositiry.add(repositoryObject);
filterUniqueChangeObjects.put(repositoryObject.getObjectId(), true);
}
}
}
[Я хотел было петросянски пошутить про бетменов,
но модератор не пропустил быдлофорс]
Если используется, то лежащий Boolean трактуется как true/false или как true/false/null?
Если не используется или используется в значении true/false, можно заменить filterUniqueChangeObjects на Set.
2. resultUniqueRepositiry - List или Set?
Если Set и у RepositoryObject.equals реализован через objectId то вообще можно отказаться от filterUniqueChangeObjects.
Если же List, то тут значимым фактором может являться размер этого самого списка. При больших его размерах использование использование кода вида
может вносить большой оверхед.