5

我有一个地图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
}

如何通过这种方法获得一组员工?

4

3 回答 3

11

只需创建一个新HashSetmap.values()

public Set<Employee> listAllEmployees()
{
      return  new HashSet<Employee>(map.values());                
}
于 2013-09-29T06:12:51.440 回答
2

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

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

Upd.:此代码执行任务,但属于某种过度编码。只需亲吻并按照此处的答案进行操作https://stackoverflow.com/a/19075053/4609353

于 2017-11-08T09:51:08.853 回答
1

其他一些选择。

您仍然可以使用集合接口来执行所有可能的集合操作。迭代、清除等(注意 values() 返回的集合是不可修改的集合)

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

于 2013-09-29T06:41:18.533 回答