gpt4 book ai didi

java - 将具有不同值的相同对象写入集合

转载 作者:行者123 更新时间:2023-12-01 06:50:27 25 4
gpt4 key购买 nike

我的问题是,在将对象添加到具有不同值的集合之前,是否必须重新初始化对象?

我编写了一个简单的程序来突出我的意思。

为什么当行

时,下面示例中的第一个值(Bravo,1)被覆盖

s1 = new Student();

类内 TestStudent 类被注释

学生类

public class student {

String name;
int id;

public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}

@Override
public String toString() {
return this.getName() + " " + this.getId();
}

}//close student

TestStudent 类(class)

public class TestStudent {

public static void main(String args[]){


student s1 = new student();

List<student> studlist = new ArrayList<student>();

s1.setId(1);
s1.setName("Bravo");

studlist.add(s1);

//output is as expected when the below line in uncommented.
s1 = new student();

s1.setId(2);
s1.setName("charlie");

studlist.add(s1);

System.out.println( Arrays.toString(studlist.toArray()) );

}//psvm

}//end class

第 s1 行的输出 = new Student();评论了

[查理2,查理2]

第 s1 行的输出 = new Student();未注释

[布拉沃 1,查理 2]

最佳答案

您可以再次将其添加到集合中。但是,当您更改对象的值时,它们会反射(reflect)到输出中,因为列表的第一个元素引用该对象。 List只保存对象的引用,而不是对象的副本。

关于java - 将具有不同值的相同对象写入集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32522349/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com