- 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);
}
}
}
al_open 21.10.2011 14:46 # +1
roman-kashitsyn 21.10.2011 14:53 # +1
3.14159265 21.10.2011 14:55 # −3
[Я хотел было петросянски пошутить про бетменов,
но модератор не пропустил быдлофорс]
tir 21.10.2011 15:53 # 0
AnimeGovno-_- 21.10.2011 17:29 # −4
guest 21.10.2011 18:43 # +1
tir 22.10.2011 15:54 # 0
Если используется, то лежащий Boolean трактуется как true/false или как true/false/null?
Если не используется или используется в значении true/false, можно заменить filterUniqueChangeObjects на Set.
2. resultUniqueRepositiry - List или Set?
Если Set и у RepositoryObject.equals реализован через objectId то вообще можно отказаться от filterUniqueChangeObjects.
Если же List, то тут значимым фактором может являться размер этого самого списка. При больших его размерах использование использование кода вида
может вносить большой оверхед.
guest8 09.04.2019 11:47 # −999