【发布时间】:2023-03-23 23:30:01
【问题描述】:
for (GroupEntity groupEntity : groups) {
// find roles belongs to group
Collection<RoleEntity> groupRoles = groupEntity.getRoles();
for (RoleEntity roleEntity : groupRoles) {
if (roleEntity.getType() == RoleType.MODULE) {
ModuleEntity module = roleEntity.getModule();
if (!modules.contains(module)) {
// prevent duplicate module
modules.add(module);
}
} else if (roleEntity.getType() == RoleType.OUTLINE) {
OutlineEntity outline = roleEntity.getOutline();
//prevent duplicate outline
if (!outlines.contains(outline)) {
outlines.add(outline);
}
}
}
}
我想用 Lambda 得到同样的结果。我试过了,但结果却是List<List<RoleEntity>>。
List<List<RoleEntity>> roles= groups.stream().map(g->g.getRoles().stream()
.filter(distinctByKey(RoleEntity::getId))
.collect(Collectors.toList())
.stream().filter(r->RoleType.MODULE.equals(r.getType()))
.collect(Collectors.toList())
).collect(Collectors.toList());
我知道 lambda 对 coder 来说是一个了不起的想法。但是学习它似乎并不那么容易。希望有人可以帮助我解决问题。谢谢! :XD
【问题讨论】: