在这种情况下如何获得波乔语的联合

问题描述 投票:0回答:2

我在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)

如果我想获得除特定修订版以外的所有角色名称,什么是最好的获得方式?

请帮助。

java
2个回答
1
投票

这应该起作用:

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()


0
投票

在每个包含列表的类中,我将编写一个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
    }
  }
} 
© www.soinside.com 2019 - 2024. All rights reserved.