当前位置: 首页 > 知识库问答 >
问题:

在地图的地图上过滤

柯乐池
2023-03-14

我有下面的地图地图,并想过滤它的基础上的一个值。结果应分配回同一地图。请告诉我什么是最好的方法。

Map<String, Map<String, Employee>> employeeMap;

<
 dep1, <"empid11", employee11> <"empid12",employee12>
 dep2, <"empid21", employee21> <"empid22",employee22>
>

Filter: employee.getState="MI"

我尝试了如下操作,但无法访问employee对象

currentMap = currentMap.entrySet().stream()
            **.filter(p->p.getValue().getState().equals("MI"))**                    
            .collect(Collectors.toMap(p -> p.getKey(),p->p.getValue()));

共有1个答案

法浩壤
2023-03-14

如果要就地修改映射(并且它允许),可以使用forEach迭代映射的条目,然后对内部映射的每个值使用removeIf,以删除满足谓词的雇员:

employeeMap.forEach((k, v) -> v.values().removeIf(e -> e.getState().equals("MI")));

否则,您可以使用toMap收集器,其中映射值的函数负责通过迭代内部映射的条目集来删除相关的雇员:

Map<String, Map<String, Employee>> employeeMap =
    employeeMap.entrySet()
               .stream()
               .collect(toMap(Map.Entry::getKey,
                              e -> e.getValue().entrySet().stream().filter(emp -> !emp.getValue().getState().equals("MI")).collect(toMap(Map.Entry::getKey, Map.Entry::getValue))));
 类似资料:
  • 我已经找到了很多关于RxJava的答案,但我想了解它在Reactor中是如何工作的。 我目前的理解是非常模糊的,我倾向于认为map是同步的,flatMap是异步的,但我不能真正理解它。 以下是一个例子: 我有文件(a

  • 问题内容: 我怎么能展平的(同类型)s到一个用Java 8? 问题答案: 我的语法可能有些偏离,但是flatMap应该为您完成大部分工作:

  • 问题内容: 我在Android Studio中,并且有一个包含两个标记的地图片段(com.google.android.gms.maps.SupportMapFragment)。一种是静态的,称为目标。另一个跟踪我的动作,称为“猎人”。它有效,但问题是猎人标记四处徘徊。我将更新间隔设置为15毫秒,但是以步行速度,每个块仅更新一次。 因此,如何正确添加标记来跟踪我的位置并使其具有合理的准确性并实时更

  • 问题内容: 我刚刚开始学习Swift。 题: 当我在地图上触摸以放置图钉注释并拖动手指时,它将创建 重复的注释行。 问题答案: Xcode 8.2•Swift 3.0.2 您只需要检查手势识别器的状态,并确定是否可以 。返回。只需在操作方法顶部添加if条件: 如果要允许用户在触摸时移动图钉,则 需要更改手势识别器的状态并在 gestureRecognizer.state更改时更新注释坐标:

  • 问题内容: 如何转换 为? 这不起作用: 问题答案: 如果您只包含,则可以这样操作: 如果不是,则可以替换 为。

  • 可确认自己所在的位置,或搜索场所及路径的应用程序。 地图的LiveArea™ 关于地图 搜索并显示地点 搜索并显示路径 插上旗帜 使用书签及历史记录 发送地点信息 设定地图