Java 如何将对象从列表移动两次到另一个列表,并以不同方式设置对象变量
我有一个问题,就是如何用几乎相同的对象将对象分配给arraylist,这些对象来自另一个列表,我想将其添加到arraylist中两次,在我将其添加到另一个列表之前,我需要在这些对象中设置一个变量的值 这就是代码Java 如何将对象从列表移动两次到另一个列表,并以不同方式设置对象变量,java,list,arraylist,Java,List,Arraylist,我有一个问题,就是如何用几乎相同的对象将对象分配给arraylist,这些对象来自另一个列表,我想将其添加到arraylist中两次,在我将其添加到另一个列表之前,我需要在这些对象中设置一个变量的值 这就是代码 ArrayList<ClassCourse> courses = new ArrayList<ClassCourse>(); ArrayList<ClassCourse> _courses = new ArrayList<ClassCourse&
ArrayList<ClassCourse> courses = new ArrayList<ClassCourse>();
ArrayList<ClassCourse> _courses = new ArrayList<ClassCourse>();
int index = 0;
for( int i = 0; i < courses.size(); i++ )
{
ClassCourse t = courses.get(i);
if(t.getSks()==4)
{
i--;
t.setSks(2);
t.setIndex(index); // I want to set this one
index++;
}
else
{
t.setIndex(index); // I want to set this one
index++;
}
_courses.add(t);
}
这就是我得到的
1 Visi Komputer A 2
1 Visi Komputer A 2
2 Matematika Diskrit C 3
4 Jaringan Nirkabel dan Komputasi Bergerak A 2
4 Jaringan Nirkabel dan Komputasi Bergerak A 2
5 Pemograman Framework .NET A 3
6 Perancangan dan Analisis Algoritma E 3
8 Sistem Terdistribusi A 2
8 Sistem Terdistribusi A 2
9 Matematika Diskrit D 3
11 Manajemen Proyek Perangkat Lunak A 2
11 Manajemen Proyek Perangkat Lunak A 2
1 Visi Komputer A 2
1 Visi Komputer A 2
2 Matematika Diskrit C 3
4 Nirkabel和Komputasi Bergerak A 2
4 Nirkabel和Komputasi Bergerak A 2
5 Pemogran Framework.NET A 3
6算法和分析算法E 3
8配电系统A 2
8配电系统A 2
9 Matematika Diskrit D 3
11马纳杰门项目A 2
11马纳杰门项目A 2
我无法使索引的值以正确的方式增加
if(t.getSks()==4)
{
i--;
t.setSks(2);
t.setIndex(index); // I want to set this one
index++;
}
我猜你是在递减I,所以对象被加了两次。但请记住,添加到列表中的是同一个对象。因此,当您设置t.setIndex(index)时,它将更改上一次迭代的index值。
这是因为java只处理引用。因此courses.get(0)和courses.get(1)返回对同一对象的引用,从而返回此行为。
如果希望索引不同,则可能需要克隆对象并将其再次添加到列表中。您需要仔细考虑这一点,并决定是否需要该对象的另一份副本。课程是空列表还是与课程有相同的计算?我可以在输出中看到多个条目
if(t.getSks()==4)
{
i--;
t.setSks(2);
t.setIndex(index); // I want to set this one
index++;
}