新对象更改值

时间:2017-10-02 21:22:30

标签: java

在我的代码中,我从首选项列表中删除了一个元素。为此,我使用

定义了一个新对象
 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的类似帖子!

1 个答案:

答案 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()

复制的值列表