如何传递整个地图

时间:2011-10-25 10:54:59

标签: java map getter treemap

又遇到了一个问题。

我试图发送一个完整的对象Map及其关联的键,以便可以从另一个类访问它。我正在使用的方法不起作用,因为我尝试使用与传递数组列表相同的方法,但它不适用于Map。

这样做的正确方法是什么?

这就是我试过的

public Map <Integer, Employee> getAllEmps()
{ 
     return (Map <Integer, Employee>) ;
}

这就是我宣布它的方式(实际的地图本身)

private static  Map <Integer, Employee> employeeMap = new TreeMap<Integer,Employee>();    

4 个答案:

答案 0 :(得分:2)

您必须返回地图实例,而不是类型。

public Class SomeClass{
     private static Map<Integer,Employee> employeeMap=...;

    //Other methods 


   public Map <Integer, Employee> getAllEmps()
  { 
      return employeeMap ;
  }
}

如果您只想要员工(没有钥匙),您可以添加其他方法

 public Collection<Employee> getEmployees(){

     return employeeMap.values();
  }

答案 1 :(得分:2)

您可以自行返回变量:

public Map <Integer, Employee> getAllEmps()
{ 
     return employeeMap;
}

允许任何人修改地图的对象。

为了防止修改,您可以返回一个不可修改的Map:

public Map <Integer, Employee> getAllEmps()
{ 
     return Collections.unmodifiableMap(employeeMap);
}

或者,您可以返回副本:

public Map <Integer, Employee> getAllEmps()
{ 
     return new TreeMap<Integer,Employee>(employeeMap);
}

答案 2 :(得分:1)

为什么不尝试传递变量本身并将地图作为成员变量?

private Map <Integer, Employee> employeeMap = new Map <Integer, Employee>();    
public Map <Integer, Employee> getAllEmps()
{ 
     return employeeMap;
}

答案 3 :(得分:0)

你的getAllMaps()函数需要实际返回一个地图;你的意思是返回静态employeeMap吗?