在ArrayList中存储对象并返回这些对象

4
import java.util.*;
import java.util.ArrayList;

class Employee{

    int eid;
    String eName;
    String eAddr;
    int eSalary;

    public Employee(int eid,String eName,String eAddr,int eSalary){
        this.eid   = eid;
        this.eName = eName;
        this.eAddr = eAddr;
        this.eSalary=eSalary;
    }
}

class EmployeeDB{

    ArrayList<Employee> al = new ArrayList<Employee>();

    public boolean addEmployee(Employee e){
        return al.add(e);
    }

    public Employee[] listAll() {
        Employee[] array = new Employee[al.size()];
        System.out.println("SIZE is : "+al.size());
        return al.toArray(array);
    }
}



public class Main
{
    public static void main(String[] args) {
        System.out.println("  ");

        Employee e1 = new Employee(111,"Employee-1","loc-1",100);
        EmployeeDB d1 = new EmployeeDB();
        d1.addEmployee(e1);


        Employee e2 = new Employee(222,"Employee-2","loc-2",200);
        EmployeeDB d2 = new EmployeeDB();
        d2.addEmployee(e2);

        EmployeeDB x = new EmployeeDB();
        Employee[] arr = x.listAll();

        for(Employee e : arr){
            System.out.println( e.eid );
            System.out.println( e.eName );
            System.out.println( e.eAddr );
            System.out.println("**************");
        }
    }
}


这里我向ArrayList添加了两个对象。最后,我试图在主类函数中显示这两个元素。

但是元素没有被添加。在添加两个对象后,它告诉我ArrayList的大小为0,并且没有显示任何元素。

请帮助我了解如何获得所需结果。


你需要搞清楚编程概念。请参考@RamPrakash的答案。 - linuxartisan
你需要使用单个对象来添加和检索ArrayList中的列表。 - Bharat Vankar
3个回答

3

在列出所有员工之前,您没有将任何员工实例添加到您的EmployeeDB中。相反,您将它们添加到不同的EmployeeDB实例中。请尝试下面的代码片段。

public static void main(String[] args) {
        System.out.println("  ");

        Employee e1 = new Employee(111,"Employee-1","loc-1",100);
        Employee e2 = new Employee(222,"Employee-2","loc-2",200);

        EmployeeDB x = new EmployeeDB();
        x.addEmployee(e1);
        x.addEmployee(e2);
        Employee[] arr = x.listAll();

        for(Employee e : arr){
            System.out.println( e.eid );
            System.out.println( e.eName );
            System.out.println( e.eAddr );
            System.out.println("**************");
        }
    }

2
你每次都在向新的EmployeeDB对象中添加Employee对象。而不是将Employee对象添加到现有的EmployeeDB对象中。
必须使用EmployeeDB对象x来添加员工对象,并检索添加的员工对象x.listAll()。
public class Main
    {
        public static void main(String[] args) {
            System.out.println("  ");

            EmployeeDB x = new EmployeeDB();

            Employee e1 = new Employee(111,"Employee-1","loc-1",100);
            //EmployeeDB d1 = new EmployeeDB();
            x.addEmployee(e1);


            Employee e2 = new Employee(222,"Employee-2","loc-2",200);
          //  EmployeeDB d2 = new EmployeeDB();
            x.addEmployee(e2);

           // EmployeeDB x = new EmployeeDB();
            Employee[] arr = x.listAll();

            for(Employee e : arr){
                System.out.println( e.eid );
                System.out.println( e.eName );
                System.out.println( e.eAddr );
                System.out.println("**************");
            }
        }
    }

1

看起来你正在使用公共对象而不是数组。只需创建一个对象数组会更简单。这样你就可以正确地检查属性和列表大小。你不需要所有这些复杂的、混乱的代码、指针和.this。这还可以让你使用JSON,如果你需要轻松存储数据库。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接