【发布时间】:2018-08-18 02:15:27
【问题描述】:
我有一段非常有趣的代码要重构以使用 java 8 流 API 功能
Map<String, Object> user = ...// pull user from somewhere
List<Map<String, Object>> attributes = ...// pull attributes from somewhere
List<Map<String, Object>> processedAttributes = new ArrayList<>();
for (Map<String, Object> attribute : attributes) {
if (!((List<Map<String, Object>>) attribute.get("subAttributes")).isEmpty()) {
for (Map<String, Object> subAttribute : (List<Map<String, Object>>) attribute.get("subAttributes")) {
if (!user.containsKey(subAttribute.get("name"))
&& Boolean.TRUE.equals(subAttribute.get("required"))) {
processedAttributes.add(subAttribute);
}
}
}
}
如何使用 java 8 流对其进行重构?
【问题讨论】:
-
将
for (iterable)替换为iterable.forEach(x -> statement),将if 替换为iterable.filter(x -> condition)。看看那个循环,语句会很长。 -
你也可以使用
map和filter(List::isEmpty)。 -
有趣的问题。您认为您可以阅读一下
StreamAPI 并提出解决方案吗?如果您卡在某个地方,我们可以帮助您吗?或者这是一个编码请求?
标签: java lambda java-8 java-stream