我有以下代码,我在其中创建一个名为users的List <>对象.我将users对象设置为不同的List <>.然而,只要我向users对象添加内容,另一个List <>对象的大小也会发生变化?这巫术是什么?这应该是这样的,我以为我只是制作了另一个List <>对象的副本.
当我运行此代码时,此日志显示:朋友数量:0朋友数量:1朋友数量:1
users = new ArrayList<Profile>(); // Friends of this player
users = game.getUserProfile().getProfileFriends();
game.getGameLog().d(classTAG, "Amount of Friends: " + game.getUserProfile().getProfileFriends().size());
users.add(game.getUserProfile());
game.getGameLog().d(classTAG, "Amount of Friends: " + game.getUserProfile().getProfileFriends().size());
this.sortUsersAccordingToXP();
game.getGameLog().d(classTAG, "Amount of Friends: " + game.getUserProfile().getProfileFriends().size());
Run Code Online (Sandbox Code Playgroud)
注意:这不是所有的代码,但是代码会影响我的问题,一旦我删除了add方法,另一个List <>的大小就不会增长(当然还有用户对象).
users = game.getUserProfile().getProfileFriends();
复制对列表的引用 - 而不是列表!
使用构造函数ArrayList创建浅表副本.