【发布时间】:2018-01-16 12:47:59
【问题描述】:
我正在创建一个新列表。我将对象从实体列表写入新列表。然后我会适当地从实体列表中清除项目,这也会导致从这个新列表中删除对象。
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。
【问题讨论】:
-
几乎所有的 Set 和 List 实现都有一个复制构造函数,它将创建一个(浅)副本。
标签: java spring hibernate spring-mvc spring-boot