gpt4 book ai didi

java - 添加到数组对象更改相同的值java

转载 作者:行者123 更新时间:2023-12-01 08:49:03 24 4
gpt4 key购买 nike

将 userdetails 添加到 arr 数组后,所有元素都变为相同的值。请解释一下如何做。

@AutowiredUserDto userDto;

public ArrayList getAllUsers()  throws commonException  {
ArrayList<UserDto> arr = new ArrayList<>();
Iterable<User> user = userRepository.findAll();
for(User userDetails: user){
userDto.setUsername(userDetails.getUsername());
userDto.setEmail(userDetails.getEmail());
userDto.setPassword(userDetails.getPassword());
arr.add(userDto);
}



return arr;

最佳答案

您的代码似乎不完整,因为您从未实际声明变量 userDto 也未对其进行初始化。但是,我怀疑问题的解决方案是确保为循环的每个迭代初始化一个新的 UserDto POJO。像这样的事情:

for (User userDetails: user) {
UserDto userDto = new UserDto(); // CRITICAL
userDto.setUsername(userDetails.getUsername());
userDto.setEmail(userDetails.getEmail());
userDto.setPassword(userDetails.getPassword());

arr.add(userDto);
}

当前您最终获得同一用户的多个副本的原因是您重复使用相同的 UserDto 对象,只是在每次迭代期间更改其值。

关于java - 添加到数组对象更改相同的值java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42503545/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com