【问题标题】:Adding multiplie objects to an ArrayList in java在java中将多个对象添加到ArrayList
【发布时间】:2014-03-20 01:40:06
【问题描述】:

我有一个名为Customer 的类,它存储以下对象:

 private String CustomerFirstName
 private String CustomerLastName
 private String CustomerID
 private String CustomerEmail

现在为了将数据传递给 jasper 报告,我决定创建一个包含这些对象的数组列表,所以:

 import java.util.ArrayList;
 import java.util.Collection;

 /* This is CustomerDataSource.java file */ 
 public class CustomerDataSource {
 public static Collection<Customer> loadCustomers() throws Exception {
 Collection<Customer> customers = new ArrayList<Customer>();

 Customer customer = new customer ( 
 /* I need help getting the objects CustomerFirstName / CustomerLastName and etc */
 );

 customer.addBilling(new Billing ( /* Adding billing info */ ));
 customer.getBilling(new Billing ( /* I need to get the object's values*/));
 customer.balOwing();
 customers.add (customer);
 return customers;
  }
}

谁能解释一下如何将Customer.java 中的对象添加到数组列表中? (总的来说,因为我还需要添加来自不同文件的对象。谢谢

【问题讨论】:

  • 你已经用这条线做了,不是吗?:customers.add (customer);如果不是,我不明白你的问题。
  • @stuntmania 我的目标是通过类似Customer customer = new customer ("SampleFirstName","SampleLastName","0000","address@web.com");
  • 这是错误的Customer customer = new customer (
  • 这是什么帐单 - 在 Customer 类中看不到
  • 在另一个名为 product.java 的类中,产品有名称、价格等

标签: java collections arraylist


【解决方案1】:

所以当我在你的评论中看到你的问题时,你想创建一个构造函数。

在您的客户类中

public Costumer(String firstName, String lastName, String ID, String email) {

  this.CostumerFirstName = firstName;
  this.CostumerLastName = lastName;
  this.CostumerID = ID;
  this.CostumerEmail = email;

}

那么你可以像这样创建一个新的客户:

Customer customer = new Customer ("SampleFirstName","SampleLastName","0000","address@web.com");

您甚至可以通过在构造函数中添加客户来自动将其添加到 ArrayList。

【讨论】:

  • 是的,我的Customer.java 中确实有一个构造函数,但我想在数组列表中动态添加这些对象,而不是像这样。因为他们可以是许多不同的客户
【解决方案2】:

根据您的评论,我猜您想使用构造函数?

您必须在Customer.java 上添加一个构造函数。

public Customer(String firstName, String lastName, String id, String email){
  this.CustomerFirstName = firstName;
  this.CustomerLastName = lastName;
  this.CustomerID = id;
  this.CustomerEmail = email;
}

您可能希望创建 getter/setter 方法来访问上述变量。

【讨论】:

    【解决方案3】:

    ArrayList&lt;E&gt;.get(i) 在静态数组中执行与[] 几乎完全相同的功能。两者之间的唯一区别是ArrayList&lt;E&gt;.get(i) 只是简单地适应了对象上下文。换句话说,您可以取消引用它。

    首先,您需要将Customer 的字段的隐私更改为公开,以便ArrayList&lt;Customers&gt; 对象可以访问它。 然后你就可以简单地检索你的类的字段:

        customers.get(index).FirstName //or whatever other field
    

    【讨论】:

    • 谢谢,所以我还必须创建一个循环来访问其他字段?
    • 不,需要在同一个循环迭代中逐个检索字段。
    • 等等,对不起,我想我没有足够关注你的原始帖子。 (不,我不知道为什么。)您希望将对象动态存储在ArrayList 中以降低内存使用量。在这种情况下,调用Billing 的构造函数并将其直接传递给Billing.addBilling() ─ i.e. costomers.add(new Billing("SampleFirstName","SampleLastName","0000","address@web.com")) 并检索它:`public Billing getBilling(){return this;}
    • 能否更新代码以反映循环?当我尝试时,我得到一堆错误
    • 我不想手动添加这些对象,这只是每个对象包含的示例,我想将对象的值存储到数组列表中
    猜你喜欢
    • 2013-10-29
    • 1970-01-01
    • 2013-11-06
    • 2023-04-06
    • 2013-10-30
    • 2014-09-15
    • 1970-01-01
    • 2017-12-12
    相关资源
    最近更新 更多