[英]Adding object to an array list in Java
我正在尝试将 object 添加到数组列表中并具有以下内容 -
public static void main(String[] args) {
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.setAuthId(2);
Authors.setAuthName("Julia Donaldson");
System.out.println(Authors.toString());
tabAuthors.add(Authors);
for (int counter =0; counter < tabAuthors.size(); counter++) {
System.out.println(tabAuthors.get(counter).getAuthId() + " " + tabAuthors.get(counter).getAuthName() );
}
}
}
作者 class
public class authors {
private int authId;
private String authName;
public int getAuthId() {
return authId;
}
public void setAuthId(int authId) {
this.authId = authId;
}
public String getAuthName() {
return authName;
}
public void setAuthName(String authName) {
this.authName = authName;
}
@Override
public String toString() {
return "authors{" +
"authId=" + authId +
", authName='" + authName + '\'' +
'}';
}
}
我期待代码返回 - 1 Roald Dahl 2 Julia Donaldson
相反,我得到 - 2 Julia 唐纳森 2 Julia 唐纳森
为什么数组列表不反映第一个 object 值?
因为您只创建了一个 object 并在设置属性时第二次覆盖。
插入第二个 object 时,需要创建新的 object。
您正在同一 Object 上设置值Julia Donaldson
。 将变量Authors
引用到新的 object 并解决问题。
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);
除了@Maurice 上面的答案之外,您还可以在authors
class 中添加一个constructor
来为每个 object 设置值。
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());
}
}
Output:
authors{authId=1, authName='Roald Dahl'}
authors{authId=2, authName='Julia Donaldson'}
1 Roald Dahl
2 Julia Donaldson
感谢您的及时回复。
我在代码中添加了以下内容,因为我需要添加不确定数量的对象 - tabAuthors.add(new authors(authId,authName,authCountry,numBooks));
并将 authId,authName,authCountry,numBooks 声明为变量。 正在从数据库表中获取 object 值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.