从地图返回一组值

时间:2013-09-29 06:09:21

标签: java generics collections map

我有一张地图HashMap <Integer,Employee> map= new HashMap<Integer,Employee>();Employee有一个int属性int empid;,它将作为地图的关键。

我的方法是

public Set<Employee> listAllEmployees()
{
      return map.values();                //This returns a collection,I need a set
}

如何从这种方法中获得一组员工?

3 个答案:

答案 0 :(得分:9)

只需使用HashSet

创建新的map.values()即可
public Set<Employee> listAllEmployees()
{
      return  new HashSet<Employee>(map.values());                
}

答案 1 :(得分:1)

其他一些选择。

您仍然可以使用Collection Interface执行所有可能的set操作。 迭代,清除等等(请注意,values()返回的Collection是一个不可修改的集合)

使用map.values()。toArray()方法并返回一个数组。

答案 2 :(得分:0)

在Stream API的Java 8中,您可以使用此方法

public Set<Employee> listAllEmployees(Map<Integer,Employee> map){
    return map.entrySet().stream()
        .flatMap(e -> e.getValue().stream())
        .collect(Collectors.toSet());
}