在我的代码中,我从首选项列表中删除了一个元素。为此,我使用
定义了一个新对象 Preferences pref= new Preferences(preferences.getNumberOfProfessors(),preferences.getNumberOfStudents(),preferences.getProfessors_preference(),preferences.getStudents_preference());
现在,我将数组列表的新数组列表声明为 -
ArrayList<ArrayList<Integer>> prof_pref_bup=new ArrayList<ArrayList<Integer>>();
prof_pref_bup=pref.getProfessors_preference();
现在,当我执行prof_pref_bup.remove(0)时,教授的首选项列表一直到首选项对象都会发生变化。有人能帮助我吗?
PS-我无法更改Preference类,因此无法使用复制构造函数。
我已经完成了 Java: Change an objects value without changing all references 关于SO的类似帖子!
答案 0 :(得分:0)
如果您的意思是将 prof_pref_bup 作为 pref.getProfessors_preference()的副本,您可以执行以下操作:
ArrayList<ArrayList<Integer>> prof_pref_bup = new ArrayList<>();
for (ArrayList<Integer> entry : pref.getProfessors_preference()) {
prof_pref_bup.add(new ArrayList<>(entry));
}
所以现在 prof_pref_bup 是一个新的ArrayList,其中包含一个完全从 pref.getProfessors_preference()
复制的值列表