繁体   English   中英

将 object 添加到 Java 中的数组列表中

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM