我在POJOS以下:
public class ApplicationVersionsData{
private List<MajorVersion> majorVersions;
}
public class MajorVersion{
private List<Revision> revisions;
}
public class Revision{
private List<Role> roles;
}
public class Role{
private String roleName;
private List<String> scopes;
}
one application may has many major versions. (v1,v2,v3)
one major version has many revisions. (v1 may have 1.0.0,1.1.0,1.1.1)
one revision has many Roles.(role1,role2,role3)
如果我想获得除特定修订版以外的所有角色名称,什么是最好的获得方式?
请帮助。
这应该起作用:
majorVersions
.stream()
.flatMap(mv -> mv.revisions())
.filter(this::isNotParticularRevision)
.flatMap(revision -> revision.roles())
.map(role -> role.roleName()).collect(Collectors.toList());
根据传递给它的修订是否是您要排除的修订,isNotParticularRevision(Revision revision)
返回boolean
是/否。您需要为类.equals()
编写一个Revision
方法。
编辑:如以下评论之一所述,应为mv.revisions().stream()
和revision.roles().stream()
。
在每个包含列表的类中,我将编写一个getter方法getAllItems()
,其中[Item]替换为majorVersions,修订版,角色...
private List<Item> getAllItems() {
// return the list
}
然后,来自父母:
// I haven't tested this you may need to tweak syntax
for (MajorVersion version : majorVersions) {
for (Revision revision : version.getAllRevisions()) {
// print/pass the revision we are currently in
for (Role role : revision.getAllRoles() {
// print or return role
}
}
}