【问题标题】:how to access arraylist of another class如何访问另一个类的arraylist
【发布时间】:2018-08-18 15:29:22
【问题描述】:

假设我有一个存储 Employee 类的 Arraylist 的班级经理说:

class Manager {

    ArrayList<Employee> x = new ArrayList<>();
}

现在是否可以通过 Employee 类中的某些方法获取 Manager 对象的名称?换句话说,使用 element 查找 Arraylist 的名称。

【问题讨论】:

  • ArrayList 这个名字是什么意思?你需要变量名x吗?
  • x 只是存储 Employee 对象的 Arraylist 的示例名称。
  • 可以详细说明一下,你到底需要什么?
  • 好的,我有两个类 Employee 和 Manager,不是继承的。现在 Manager 类将 Employee 类实例存储在 ArrayList 变量中。我显然可以知道存储在 Manager.Arraylist 中的元素(即 Employee 对象),但是如何对其进行反向操作。通过 Employee 知道 Manager 类对象的名称。

标签: java class arraylist


【解决方案1】:

如果你想从员工对象中获取经理对象,那么你必须实现双向映射。 在员工类中添加 manager 属性。

【讨论】:

    【解决方案2】:

    据我了解,问题是找到给定员工的经理。为此,您需要一份所有经理的列表以及您搜索经理的员工的详细信息。

    class Manager
        {
           private String name;
           private List<Employee> employees;
    
           public List<Employee> getEmployees()
           {
             return this.employees;
           }
    
           public String getName()
           {
              return this.name;
           }
        }
    

    如果您正在使用 Employee 的现有对象(您从 Manager 对象中的员工列表中获取 Employee 对象),则以下方法将起作用。

    class FunctionClass{
       public static void main(String[] args)
       {
          List<Manager> allManagers = getAllManagers();
          Employee currEmployee = getCurrentEmployee();
    
          for( Manager manager : allManagers )
          {
             if( manager.getEmployees().contains( currEmployee ) )
             {
                System.out.println( manager.getName() );
                break;
             }
          }
       }
    }
    

    如果您从提供的数据创建 Employee 对象,上述方法将不起作用。您必须遍历每个经理的所有员工。

    class FunctionClass{
           public static void main(String[] args)
           {
              List<Manager> allManagers = getAllManagers();
              Employee currEmployee = getCurrentEmployee();
    
              for( Manager manager : allManagers )
              {
                 for( Employee emp: manager.getEmployees() )
                 {
                    if( /*compare if emp and currEmployee equal*/ )
                    {
                      System.out.println( manager.getName() );
                      break;
                    }
              }
           }
        }
    

    【讨论】:

      猜你喜欢
      • 2016-11-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-17
      • 1970-01-01
      • 2018-05-27
      相关资源
      最近更新 更多