我正在创建一个新列表。我从实体列表中将对象写入新列表。然后我将适当地清理实体列表中的项目,这也会导致从这个新列表中删除对象。
final ContributionEntity contributionEntity = this.findContribution(contributionId, DataStatus.WAITING, user, MovieField.PHOTO);
final Set<Long> idsToAddBeforeCleanUp = contributionEntity.getIdsToAdd();
this.cleanUpIdsToAdd(contributionEntity.getIdsToAdd(), contribution.getIdsToAdd(), contributionEntity.getMovie().getPhotos());
private void cleanUpIdsToAdd(final Set<Long> idsToAddFromEntity, final Set<Long> idsToAddFromDto,
final List<? extends MovieInfoEntity> entities) {
for (final Iterator<Long> it = idsToAddFromEntity.iterator(); it.hasNext(); ) {
final Long id = it.next();
if (!idsToAddFromDto.contains(id)) {
it.remove();
this.delete(entities, id);
}
}
}
此代码会从主题照片contributionEntity
列表中删除实体,但也会从列表idsToAddBeforeCleanUp
中删除对象。
如何从实体复制列表并使其独立于此实体?我不想删除列表idsToAddBeforeCleanUp
中的项目。
答案 0 :(得分:0)
final Set<Long> idsToAddBeforeCleanUp = new HashSet<>();
contributionEntity.getIdsToAdd().foreach(item -> idsToAddBeforeCleanUp.add(item));
你没有真正创建一个新的集合,你只是对该集合做了另一个引用。使用上面的代码,您可以创建一个新列表,它应该有效。