如何更改集合中的参数化类型?

问题描述 投票:0回答:1

我想在

UserServiceImpl
中的一种方法中使用集合来返回将由
UserDTO
参数化的所有用户的列表。 我有以下方法:

@Override
public List<UserEntity> getUsers() {
    var usersList = userRepository.findAll();
    return usersList;
}

但我想将其更改为

public List<UserDTO> getUsers()...
我有从实体到dto的
map
方法,反之亦然:

public UserDTO mapToUserDTO(UserEntity userEntity) {
    var userDto = new UserDTO();
    var rolesEntity = userEntity.getRoles().stream()
            .map(RoleEntity::getId)
            .map(String::valueOf)
            .collect(Collectors.toList());
    userDto.setId(userEntity.getId());
    userDto.setUsername(userEntity.getUsername());
    userDto.setName(userEntity.getName());
    userDto.setSurname(userEntity.getSurname());
    userDto.setEmail(userEntity.getEmail());
    userDto.setAge(userEntity.getAge());
    userDto.setRoles(rolesEntity);
    return userDto;
}

但在这种情况下就不能应用了。 您能帮我一下吗 - 如何在我的方法中将参数化类型从

UserEntity
更改为
UserDTO

java collections java-stream
1个回答
2
投票

在用户实体列表上创建一个流,通过

map()
操作和您共享的方法将每个实体转换为 DTO,并将结果收集到列表中。

public List<UserDTO> getUsers() {
    
    return userRepository.findAll().stream()
        .map(this::mapToUserDTO)       // or ClassName::mapToUserDTO
        .collect(Collectors.toList()); // or .toList() for Java 16+
}
© www.soinside.com 2019 - 2024. All rights reserved.