如何在Java中保存ArrayList中的数据?

时间:2015-06-24 15:27:39

标签: java arrays arraylist collections

我在 Company 类中有一个make方法,并在 PayrollApp 类中调用它。首先!它工作正常,但每当我第二次调用该方法时,它会抛出 indexoutofboundException 。我在控制台上运行此应用程序而不使用数据库。我想将所有员工对象添加到该arraylist中。

public class Company {
    private ArrayList<Employee> _employeeList = new ArrayList<Employee>();
    public void setAddEmployee(Employee c){
        _employeeList.add(c);
    }
}

Employee emp = new Employee(_name, _empId);
emp.setNumOfHoursPerWeek(_hoursPerWeek);
emp.setHourlySalary(_hourlySalary);
emp.setManagerName(_manager);
Company com = new Company();

com.setAddEmployee(emp);

1 个答案:

答案 0 :(得分:2)

问题是索引iCompany的静态变量,而ArrayList _employeeList则不是。{/ p>

因此变量i由对象的所有实例共享,而ArrayList _employeeList是实例变量。

所以第一次执行company.setAddEmployee()时,它工作正常,因为arrayList都是空的,而且我是0,所以它可以工作,并且我增加到1。

但下次对company.setAddEmployee()对象执行company时,该对象的arrayList为空,但我是1,因为变量i是静态的并由Company类的所有实例(Object)共享。

您需要使ArrayList静态,或者您需要使i非静态(成员变量),尽管您可能甚至不需要i(我们可以也做_employeeList.add(<element>),它会在下一个可用的索引处添加),但我不能评论你如何解决这个问题,因为我不确定你要用代码实现什么。