Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将对象从列表移动两次到另一个列表,并以不同方式设置对象变量_Java_List_Arraylist - Fatal编程技术网

Java 如何将对象从列表移动两次到另一个列表,并以不同方式设置对象变量

Java 如何将对象从列表移动两次到另一个列表,并以不同方式设置对象变量,java,list,arraylist,Java,List,Arraylist,我有一个问题,就是如何用几乎相同的对象将对象分配给arraylist,这些对象来自另一个列表,我想将其添加到arraylist中两次,在我将其添加到另一个列表之前,我需要在这些对象中设置一个变量的值 这就是代码 ArrayList<ClassCourse> courses = new ArrayList<ClassCourse>(); ArrayList<ClassCourse> _courses = new ArrayList<ClassCourse&

我有一个问题,就是如何用几乎相同的对象将对象分配给arraylist,这些对象来自另一个列表,我想将其添加到arraylist中两次,在我将其添加到另一个列表之前,我需要在这些对象中设置一个变量的值

这就是代码

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++;
}