0
Я написал этот код, но теперь хочу реорганизовать его, чтобы не использовать рекурсию. Но я не могу обвести вокруг себя голову? Любые идеи парней?Рекурсия в Iteration-refactoring
public List<ServiceDTO> findCustomerServices(String customerId) {
List<Service> serviceTree = contractService.findCustomerServices(customerId);
List<ServiceDTO> serviceDTOs = new ArrayList<ServiceDTO>();
cloneTree(serviceTree, serviceDTOs);
return serviceDTOs;
}
private void cloneTree(List<Service> services, List<ServiceDTO> clonedServices) {
for (Service service : services) {
ServiceDTO serviceDTO = new ServiceDTO();
serviceDTO.setServiceId(service.getServiceId());
serviceDTO.setCfServiceInstanceId(service.getCfServiceInstanceId());
serviceDTO.setEndDate(service.getEndDate());
serviceDTO.setStartDate(service.getStartDate());
serviceDTO.setPhoneNumber(service.getPhoneNumber());
serviceDTO.setIsPrimary(service.getIsPrimary());
serviceDTO.setDesignationNumber(service.getDesignationNumber());
serviceDTO.setServiceIdentifier(service.getServiceIdentifier());
serviceDTO.setEndDateDay(service.getEndDateDay());
serviceDTO.setEndDateMonth(service.getEndDateMonth());
serviceDTO.setEndDateYear(service.getEndDateYear());
clonedServices.add(serviceDTO);
if (service.getDependentServices() != null && !service.getDependentServices().isEmpty()) {
cloneTree(service.getDependentServices(), serviceDTO.getDependentServices());
}
}
}
Почему вы хотите, чтобы реорганизовать его? – shmosel
Потому что он использует слишком mcuh память. У каждой службы может быть множество зависимых сервисов, несколько уровней вниз. – Dariusz
Есть ли предел глубине? – shmosel