在我的 Library
班上有一个 Set<Library> items
现场。因此,在 LibraryDTO
我有 Set<LibraryDTO> items
. 当我建立一个 Library
从 LibraryDTO
,我意识到在将dto转换为items字段中的实体时,我将进入一个无限循环,例如:
private Library buildLibraryFromLibraryDTO(LibraryDTO libraryDTO) {
return Library.builder()
.items(libraryDTO.getItems().stream().map(library -> Library.builder()
.items(library.getItems().stream().map ... repeats the same DTO to entity conversion process from the above level)
.build()).collect(Collectors.toSet()))
.build();
}
我曾想过在items流中创建一个递归方法,但在逻辑上遇到了困难。我怎么能做到?我研究并看到了一些使用stream的递归示例,但无法为我的案例进行复制。谢谢您
1条答案
按热度按时间5lwkijsr1#
当不需要递归调用以避免无限循环时,需要使用基本情况。意味着什么时候
libraryDTO.getItems()
如果为空,则不再调用。可以使用三元运算符检查
libraryDTO.getItems()
不为空,则调用buildLibraryFromLibraryDTO
对于其他每一项为空。