在Java中向数组列表添加对象
我正在尝试将一个对象添加到数组列表中,并具有以下内容-在Java中向数组列表添加对象,java,arraylist,Java,Arraylist,我正在尝试将一个对象添加到数组列表中,并具有以下内容- publicstaticvoidmain(字符串[]args){ 作者=新作者(); ArrayList tabAuthors=新建ArrayList(); 作者:setAuthId(1); 作者:setAuthName(“Roald Dahl”); System.out.println(Authors.toString()); tabAuthors.add(作者); 作者:setAuthId(2); 作者:setAuthName(“Jul
publicstaticvoidmain(字符串[]args){
作者=新作者();
ArrayList tabAuthors=新建ArrayList();
作者:setAuthId(1);
作者:setAuthName(“Roald Dahl”);
System.out.println(Authors.toString());
tabAuthors.add(作者);
作者:setAuthId(2);
作者:setAuthName(“Julia Donaldson”);
System.out.println(Authors.toString());
tabAuthors.add(作者);
对于(int counter=0;counter
作者类
公共类作者{
私有int-authId;
私有字符串authName;
public int getAuthId(){
返回authId;
}
public void setAuthId(int authId){
this.authId=authId;
}
公共字符串getAuthName(){
返回authName;
}
public void setAuthName(字符串authName){
this.authName=authName;
}
@凌驾
公共字符串toString(){
返回“作者{”+
“authId=“+authId+
,authName='“+authName+'\'”+
'}';
}
}
我期待代码返回-
1罗尔德达尔酒店
2朱莉娅·唐纳森
相反,我得到了-
2朱莉娅·唐纳森
2朱莉娅·唐纳森
为什么数组列表没有反映第一个对象的值?您正在同一对象上设置值
Julia Donaldson
。将变量Authors
引用到新对象,问题就解决了
authors Authors = new authors();
ArrayList<authors> tabAuthors = new ArrayList<authors>();
Authors.setAuthId(1);
Authors.setAuthName("Roald Dahl");
System.out.println(Authors.toString());
tabAuthors.add(Authors);
Authors = new Authors(); //Reference Authors to a new object here, or else
//you're using the same object and you'll overwrite the value Roald Dahl with
//Julia Donaldson
Authors.setAuthId(2);
Authors.setAuthName("Julia Donaldson");
System.out.println(Authors.toString());
tabAuthors.add(Authors);
authors=新作者();
ArrayList tabAuthors=新建ArrayList();
作者:setAuthId(1);
作者:setAuthName(“Roald Dahl”);
System.out.println(Authors.toString());
tabAuthors.add(作者);
作者=新作者()//在此处将作者引用到新对象,否则
//您使用的是同一个对象,您将用
//朱莉娅·唐纳森
作者:setAuthId(2);
作者:setAuthName(“Julia Donaldson”);
System.out.println(Authors.toString());
tabAuthors.add(作者);
因为您只创建一个对象,并在设置属性时第二次重写
插入第二个对象时,您需要创建新对象。除了@Maurice给出的上述答案之外,您还可以在
authors
类中添加构造函数来设置每个对象的值
public authors(int authId, String authName) {
super();
this.authId = authId;
this.authName = authName;
}
在main()
中,按如下所示创建两个对象并将其添加到列表中:
public static void main(String[] args) {
Authors authors1 = new Authors(1, "Roald Dahl");
Authors authors2 = new Authors(2, "Julia Donaldson");
List<Authors> tabAuthors = new ArrayList<Authors>();
System.out.println(authors1.toString());
tabAuthors.add(authors1);
System.out.println(authors2.toString());
tabAuthors.add(authors2);
for (int counter = 0; counter < tabAuthors.size(); counter++) {
System.out.println(tabAuthors.get(counter).getAuthId() + " " + tabAuthors.get(counter).getAuthName());
}
}
感谢您的及时回复。
我在代码中添加了以下内容,因为我需要添加数量不确定的对象-
tabAuthors.add(新作者(authId、authName、authCountry、numBooks))
并将authId、authName、authCountry和numBooks声明为变量。
正在从数据库表中提取对象值
authors{authId=1, authName='Roald Dahl'}
authors{authId=2, authName='Julia Donaldson'}
1 Roald Dahl
2 Julia Donaldson