Java 如何在ArrayList中多次添加对象

Java 如何在ArrayList中多次添加对象,java,Java,我将个人的详细信息添加到数组列表中两次,但是当我想要打印这两个对象时,它只会重复最后的详细信息两次(并且不会打印第一个) import java.util.ArrayList; 公共类数组列表 { Person=新人(); ArrayList数组=新的ArrayList(); 一人二人; 树上的人; 无效数据输入(字符串名称、整数年龄、双标记、整数itc、整数pf) { 人员。添加详细信息(姓名、年龄、标记); 个人信息(itc、pf); 数组。添加(人); } 作废打印() { int指数=0

我将
个人的详细信息添加到
数组列表中两次,但是当我想要打印这两个对象时,它只会重复最后的详细信息两次(并且不会打印第一个)

import java.util.ArrayList;
公共类数组列表
{
Person=新人();
ArrayList数组=新的ArrayList();
一人二人;
树上的人;
无效数据输入(字符串名称、整数年龄、双标记、整数itc、整数pf)
{
人员。添加详细信息(姓名、年龄、标记);
个人信息(itc、pf);
数组。添加(人);
}
作废打印()
{
int指数=0;

而(index您必须创建新的
Person
实例,或者只需添加(并更新)相同的
Person
实例(因为您只有一个引用)


Person-Person=new-Person();//您必须创建新的
Person
实例,或者只需添加(并更新)相同的
Person
实例(因为您只有一个引用)


Person-Person=new-Person();//我看不出您在哪里创建
Person
实例,但每次向列表中添加
Person
之前都必须创建一个新实例。否则,列表将多次包含同一实例

您看到打印的详细信息反映了您对该单个实例所做的最后一次UDPATE,即第二个
人员的详细信息

void dataEntery(String name , int age , double marks, int itc, int pf)
{
    Person person = new Person();
    person.addDetail(name,age,marks);
    person.marksDetail(itc,pf);

    array.add(person);

}

我看不出您在何处创建
person
实例,但每次向列表中添加
person
之前都必须创建一个新实例。否则,列表将多次包含同一实例

您看到打印的详细信息反映了您对该单个实例所做的最后一次UDPATE,即第二个
人员的详细信息

void dataEntery(String name , int age , double marks, int itc, int pf)
{
    Person person = new Person();
    person.addDetail(name,age,marks);
    person.marksDetail(itc,pf);

    array.add(person);

}

好的,所以我想出了另一种方法。我觉得这很愚蠢,但我刚刚意识到我可以这么做:

Fish bass = new Fish("bass", 5);

fishlist.add(bass);

for (Fish fish: fishlist) {
    if (fish.caught) {
        fishcaughtlist.add(new Fish(fish.name, fish.weight);
    }
}

因此,这将添加一个新实例,它只需要从bass获取所有信息。感谢您的帮助tho:)

好的,所以我想出了另一种方法。我对此感到非常愚蠢,但我刚刚意识到我可以简单地做到这一点:

Fish bass = new Fish("bass", 5);

fishlist.add(bass);

for (Fish fish: fishlist) {
    if (fish.caught) {
        fishcaughtlist.add(new Fish(fish.name, fish.weight);
    }
}

因此,这将添加一个新实例,该实例仅获取bass的所有信息。感谢您的帮助tho:)

您添加了两次相同的对象。Java是按值传递引用的,因此您要对相同的对象进行变异。另外,不要调用您的类
Arraylist
;这很混乱。非常感谢您的朋友,您添加了两次相同的对象。Java i让我们按值传递引用,这样您就可以对同一个对象进行变异。另外,不要调用类
Arraylist
;这会让人困惑。非常感谢您的朋友,这意味着每次都应该调用引用变量created@ahsanawan这意味着每次都应该创建一个新实例。您可以使用相同的变量(例如,如果您将其声明为类的成员—尽管没有理由这样做),但您必须在将其添加到列表之前为其分配一个新实例。这意味着每次引用变量created@ahsanawan这意味着每次都应该创建一个新实例。您可以使用相同的变量(例如,如果您将其声明为类的成员—尽管没有理由这样做),但您必须在将其添加到列表之前为其分配一个新实例。