Приведенный выше код не будет работать, см. Комментарий @JB Nizet,
Запуск исключения ConcurrentModificationException
По сути, исключение ConcurrentModificationException используется для быстрого сбоя при изменении чего-то, что мы повторяем. Давайте докажем это с помощью простого теста:
List<Integer> integers = newArrayList(1, 2, 3);
for (Integer integer : integers) {
integers.remove(1);
}
Так что вы можете использовать forEach
и removeIf
, чтобы избежать ConcurrentModificationException
List<InfoDTO> info = customerDTO.getInfo();
info.forEach(more->more.getMore().forEach(channelDto->channelDto.getChannels().removeIf(cdto->"apple".equals(cdto.getId()))));
Или, если у вас есть только List<ChannelDTO>
List<ChannelDTO> channels = MoreDTO.getChannels();
channels.removeIf(cdto->"apple".equals(cdto.getId()));