Java中基于条件的过滤映射

Java中基于条件的过滤映射,java,hashmap,Java,Hashmap,我有一个地图对象 public class Employee { private int id; private String name; private String designation; } Map<Integer, Employee> map = new HashMap<Integer, Employee>(); 公共类员工{ 私有int-id; 私有字符串名称; 专用字符串指定; } Map Map=newhashmap();

我有一个地图对象

public class Employee {
    private int id;
    private String name;
    private String designation; 
}

Map<Integer, Employee> map = new HashMap<Integer, Employee>();
公共类员工{
私有int-id;
私有字符串名称;
专用字符串指定;
}
Map Map=newhashmap();
我想根据Employee中的一个属性过滤映射,该属性应该与用户输入的给定属性相匹配,比如用户名

我正在使用

public List<Employee> getEmployeesByName(String userName) {
    map.entrySet().stream().filter(e-> e.getValue().getName().equals(userName)).collect(Collectors.toList());
}
public List getEmployeesByName(字符串用户名){
map.entrySet().stream().filter(e->e.getValue().getName().equals(userName)).collect(Collectors.toList());
}

我希望输出为
列表
格式。我不明白为什么它的格式是
列表
。我在这里遗漏了什么?

您似乎正在流式处理
Map.Entry
s,但只需要值。将
map.stream()
(不应该工作)更改为
map.values().stream()

请提供一个示例,说明您所做的尝试。我们应该能够复制代码并按原样运行,而无需添加任何内容。这意味着您至少应该有一个像任何独立Java程序一样具有
main()
的类。然后显示您得到的输出,并描述您希望它是什么。这应该是
.collect(collector.toList())
我已经做了更正将
e->e.getValue().getName()==userName
更改为
e->e.getValue().getName().equals(userName)
添加到这一点上,
map.stream()
。编辑:编辑完成后,他现在需要将
map.entrySet()
替换为
map.values()
@curiousdev是的,我想是的,必须去检查一下。