首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在arraylist中存储对象并返回这些对象

在arraylist中存储对象并返回这些对象
EN

Stack Overflow用户
提问于 2019-12-22 11:47:08
回答 3查看 72关注 0票数 4
代码语言:javascript
复制
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("**************");
        }
    }
}

这里我将两个对象添加到数组列表中。最后,我尝试在main类函数中显示这两个元素。

但是没有添加元素。在添加两个对象之后,它告诉我数组列表的大小是0。并且不显示任何元素。

所以请告诉我怎样才能得到想要的结果。

EN

回答 3

Stack Overflow用户

发布于 2019-12-22 11:56:58

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

代码语言:javascript
复制
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("**************");
        }
    }
票数 3
EN

Stack Overflow用户

发布于 2019-12-22 11:57:13

您每次都会向新的EmployeeDB对象添加Employee对象。而不是向现有EmployeeDB对象添加Employee对象。

必须使用EmployeeDB object x来添加employee对象以及检索添加的employee对象x.listAll()

代码语言:javascript
复制
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("**************");
            }
        }
    }
票数 2
EN

Stack Overflow用户

发布于 2019-12-22 11:58:15

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59441483

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档