簡體   English   中英

從另一個類向ArrayList添加元素

[英]Adding elements to an ArrayList from another class

我只需要這個基本代碼,我需要幫助將員工數據添加到另一個類的ArrayList。 我只是編寫這段代碼以准備作業,所以不要過多地抨擊我的代碼。 從本質上講,我將需要添加員工元素並最終刪除它們。 但是現在,我只需要幫助將元素添加到我的其他Employee類中。 =]

public class main {
    private static Employee employee;   

    public static void main(String[] args) {
        employee = new Employee(10,10); 
        System.out.println(employee.toString());
    }
}

...............

import java.util.ArrayList;

public class Employee {
    public int employeeNum;
    public double hourRate;
    ArrayList<Employee> Employee = new ArrayList<>();

    public Employee(int employeeNum, double hourRate){
        this.employeeNum = employeeNum;
        this.hourRate = hourRate;
    }

    public String toString(){
        return ""+employeeNum+hourRate;
    }
}

簡單示例 -

package com;

import java.util.ArrayList;

public class TestPage{

    public static void main(String[] args){
        Employee emp1, emp2;

        emp1 = new Employee();
        emp2 = new Employee();

        emp1.setName("MAK");
        emp2.setName("MICHELE");

        emp1.setAddress("NY");
        emp2.setAddress("WY");

        //and keep putting other information like this

        ArrayList<Employee> employee = new ArrayList<Employee>();
        employee.add(emp1);
        employee.add(emp2);

        System.out.println("emp1 name is : " + employee.get(0).getName());
        System.out.println("emp2 name is : " + employee.get(1).getName());

        System.out.println("emp1 address is : " + employee.get(0).getAddress());
        System.out.println("emp2 address is : " + employee.get(1).getAddress());
    }
}

class Employee{
    String name, address;
    int age, salary;

    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getAddress() {
        return address;
    }
    public void setAddress(String address) {
        this.address = address;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    public int getSalary() {
        return salary;
    }
    public void setSalary(int salary) {
        this.salary = salary;
    }
}

看起來你所要求的是基於一名雇員有子員工,結構上可能代表一個等級(一些評論者似乎忽略了這一點)。 但這是我的一個假設。 基於這個假設。

從主要類的結構開始的一些反饋:

public class main {  
    public static void main(String[] args) {
        Employee employee = new Employee(10,10); 
        System.out.println(employee.toString());
    }
}

在我看來,沒有理由為該根員工實例提供靜態實例變量。 您應該盡可能地限制變量的范圍。 看起來它很可能在main()方法的范圍內。

    public class Employee {
      public int employeeNum;
      public double hourRate;
      ArrayList<Employee> employees= new ArrayList<>();

      public Employee(int employeeNum, double hourRate){
         this.employeeNum = employeeNum;
         this.hourRate = hourRate;
      }

      public String toString(){
         return ""+employeeNum+hourRate;
      }

      public ArrayList<Employee> getEmployees() { 
           return this.employees;
      }
}

為arraylist員工或employeeList命名可能更好。 在這種情況下我和員工一起去,因為這個慣例是可取的。

並且就您的問題而言,ArrayList是通過引用傳遞的,因此您只需為子員工列表(員工)添加一個getter方法。

要從主要方法添加員工,您可以執行類似的操作

Employee rootEmployee = new Employee(5, 10.0); 
rootEmployee.getEmployees().add(new Employee(6, 5.0)); 

或者你可以像這樣向Employee添加一個額外的方法:

public void addEmployee(Employee e) { 
   employees.add(e);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM