2
我有,我想重构用java 8流API功能的Java 8流和lambda表达式
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流进行重构,代码非常有趣的一部分吗?
用'iterable.forEach(x - >语句)'替换'(iterable)',用'iterable.filter(x - > condition)'替换''。看着这个循环,这个陈述将会很长。 – RogueCSDev
你也可以使用'map'和'filter(List :: isEmpty)'。 – tly
有趣的问题。你认为你可以在Stream Stream API中读一下,想出一个解决方案吗?如果你遇到困难,我们可以帮助你?或者这是一个编码请求? – CKing