Java:ArrayLists帮助,引用

时间:2013-01-29 05:58:42

标签: java

A类: 包含Employee对象的填充arraylist,每个对象包含employeeName和employeeNumber

B类是否可以创建一个引用A类雇员对象的arraylist的变量?我只需要搜索那个arraylist。也许打印出来。不改变任何内容。

我如何做到这一点的任何策略或示例?

8 个答案:

答案 0 :(得分:2)



    package p1;

    import java.util.ArrayList;
    import java.util.Collections;
    import java.util.List;



    public class ArrayReference {
        public static void main(String[] args) {
            new BB().method();
        }
    }


    class AA {
        private List list = new ArrayList();

        public List getEmpList() {
            return Collections.unmodifiableList(list);
        }

    }

    class BB {
        public void method() {
            List list = new AA().getEmpList();
            list.add(new Emp()); // here runtime exception will occour if we
            // try to add objects in list.
            // java.lang.UnsupportedOperationException is an exception for add
            // method in list

        }
    }

    class Emp {

    }

答案 1 :(得分:1)

在A类上编写一个getter方法,公开ArrayList并简单地从B类调用getter

class A { 
    List myList...;

    public List<Employee> getEmployees() { 
    ...
    }
}

class B { 
    A handleToA;

    public void search() { 
        handleToA.getEmployees()...
    }

}

答案 2 :(得分:1)

当然,您只需允许Class AArrayList分享Class B。您可以在public中创建Class A getter 方法,将ArrayList返回给请求它的任何其他类。

Class A
{
   private List<Employee> employees;

   public A() {
     this.employees = new ArrayList<>();
   }

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

现在Class B可以通过致电ArrayList来询问员工getEmployees()

Class B
{
   private A a;

   public B() {
     this.a = new A();

     // fill the list ...

     List<Employee> fromA = a.getEmployees();  
   }
}

答案 3 :(得分:1)

在A类中有一个getter,不需要在ClassB中重复它

class A {
    List<Employee> employeeList = new ArrayList<Employee>();

    public List<Employee> getEmployeeList() {
        return employeeList;
    }   
}

答案 4 :(得分:1)

我认为这就是你要找的东西:

Class A {
   private List<Employees> empList = new ArrayList<Employees>();

   //Setters
   //Getters

   //Load data to empList
}

Class B {

  void empList() {
      A empClass = new A();

      List<Employees> empListFromClassA = new ArrayList<Employees>();
      empListFromClassA.addAll(getEmpList()); //Getter from class A
}

希望有所帮助

答案 5 :(得分:1)

如果您只想在列表中搜索,请使用:

A级{     列出myList ...;

public List<Employee> getEmployees() { 
    return myList.clone();
}

}

然后返回列表的克隆。如果您更改克隆原始列表保持不变

答案 6 :(得分:1)

在A类中创建一个公共getter方法,并通过Class B访问它。

class A{
  private List<Employee> employees;

  public List getEmployees(){ return this.employees;}
}


class B{
  private List<Employee> employees;

  public B(){ 
  A a  = new A();
  employees = a.getEmployees();
 }

}

答案 7 :(得分:1)

你试图实现的现象是“封装”。 在java中我们可以通过实现Getter来实现这一点,而setter方法是Plain java对象。 Getter和setter在java应用程序开发中扮演着非常重要的角色。

您可以实施这样的解决方案

import java.util.ArrayList;
import java.util.List;

class A {
    private List<String> empList = new ArrayList<String>();
    A(){
        empList.add("Employee 1");
        empList.add("Employee 2");
        empList.add("Employee 3");
        empList.add("Employee 4");
        empList.add("Employee 5");

    }
    public List<String> getEmpList() {
        return empList;
    }

    public void setEmpList(List<String> empList) {
        this.empList = empList;
    }
}

class B {
    void empList() {
        A empClass = new A();
        List<String> empListFromClassA = empClass.getEmpList();     
        System.out.println("This is what you need ? "+ empListFromClassA.toString());
    }
}

public class TEST{
    public static void main(String Args[]){
        B classb = new B();
        classb.empList();
    }
}