如果hashmap过滤器收集器Java 8中的条件为true,则执行某些操作

时间:2018-06-27 18:54:18

标签: java java-8 hashmap

我有Map,其中键是字符串,值是Employee对象。看起来像Map,我是Java 8的新手,正在学习阶段

Map<String, Employee> cond_Map = new LinkedHashMap<String, Employee>();

if(Obj.getEmp == null){
    cond_Map.forEach((key, value) -> {
        if(key == "one"){
            Obj.setEmp(value);
        }
    });
}

我试图使用过滤器使它成为单行且简单的

cond_Map.entrySet().stream().filter(key -> Python3Parser.If_stmtContext.class.isInstance(key.getKey())).collect(???);

但是它不起作用..!有人有主意吗?谢谢。

2 个答案:

答案 0 :(得分:1)

您无需遍历地图即可找到具有匹配键的条目。通过键查找条目是地图的工作:

if(Obj.getEmp == null && cond_Map.containsKey("one")){
    Obj.setEmp(cond_Map.get("one"));
}

答案 1 :(得分:0)

您正在使用key == "one"而不是key.equals("one")

另一种使用过滤器的方法。

    if (Obj.getEmp == null)
    {
        cond_Map.entrySet().stream()
           .filter(entry -> "one".equals(entry.getKey())).forEach(entry -> {
            Obj.setEmp(entry.getValue());
        });
    }