0

有另一个问题。

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

正确的做法是什么?

这是我尝试过的

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

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

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

4 回答 4

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();
  }
于 2011-10-25T10:57:23.110 回答
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);
}
于 2011-10-25T11:01:57.287 回答
1

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

private Map <Integer, Employee> employeeMap = new Map <Integer, Employee>();    
public Map <Integer, Employee> getAllEmps()
{ 
     return employeeMap;
}
于 2011-10-25T10:58:03.970 回答
0

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

于 2011-10-25T10:58:01.707 回答