hephaestusWorkMetricInfoList.stream().filter(a -> workMetricInfoInDatabase.stream().map(b -> b.getMetricName()).collect(Collectors.toList()).contains(a.getMetricName()) ).collect(Collectors.toList())
时间: 2024-04-27 20:23:31 浏览: 74
这是一段 Java 8 的代码,使用了 lambda 表达式和 Stream API。大致意思是:将 `hephaestusWorkMetricInfoList` 中的元素作为流,筛选出 `workMetricInfoInDatabase` 中包含的指标名称(即 `MetricName` 属性),并将结果收集到列表中。
具体来说,这段代码:
1. 调用 `hephaestusWorkMetricInfoList.stream()` 方法将 `hephaestusWorkMetricInfoList` 转换为一个流。
2. 调用 `filter()` 方法,传入一个 lambda 表达式作为参数。这个 lambda 表达式接收一个参数 `a`,它代表流中的每一个元素,然后返回一个 boolean 值。如果返回值为 true,就表示该元素应该被保留下来。
3. 在 lambda 表达式中,调用 `workMetricInfoInDatabase.stream()` 方法将 `workMetricInfoInDatabase` 转换为一个流。
4. 调用 `map()` 方法,传入一个 lambda 表达式作为参数。这个 lambda 表达式接收一个参数 `b`,它代表流中的每一个元素,然后返回一个新的值。在这个 lambda 表达式中,我们调用 `b.getMetricName()` 方法获取指标名称。
5. 调用 `collect(Collectors.toList())` 方法将结果收集到列表中。
6. 调用 `contains()` 方法,传入 `a.getMetricName()` 作为参数,判断 `workMetricInfoInDatabase` 中是否包含 `a` 的指标名称。
7. 最终,`filter()` 方法返回一个新的流,其中只包含被保留下来的元素。我们再调用 `collect(Collectors.toList())` 方法,将这些元素收集到一个列表中,作为最终的结果。
阅读全文