java - 根据映射到类的 yaml 中的条件查找 "row"字段

标签 java yaml

 T1:
   apis :
     - api: r1
       cnfig :
         - country: M1
           userseg: 5
           row: 4
         - country: M2
           userseg: 11
           row: 10
      - api: r2
       cnfig :
         - country: M1
           userseg: 5
           row: 6
         - country: M2
           userseg: 5
           row: 12

我需要在带有列表的 map 中查找用户行号的所有 api 名称:5,国家:M1>>

   List<Api> collect = apis
                   .stream().filter(
                           api -> (api.getConfigs().stream()
                                   .filter(singleConfig -> singleConfig.userseg.contains("5")
                                           && singleConfig.country.equals("M1"))
                                   .count() > 0))
                   .collect(Collectors.toList());

但是collect给了我所有api和所有配置的列表。它给了我以下配置:

   cnfig :
         - country: M1
           userseg: 5

与其他配置一起

   cnfig :
         - country: M2
           userseg: 10

我怎样才能获得具有上述条件的列表List>>?我期望得到 r1,4 和 r2,6

最佳答案

您没有具体说明如何输入这些结果,并且缺少结构上的某些类型信息,但我将向您展示总体思路:

List<String> collect = apis.stream().flatMap(api ->
    api.getConfigs().stream().filter(
        singleConfig -> singleConfig.userseg.contains("5")
                     && singleConfig.country.equals("M1")
    ).map(config -> api.getApi() + "," + config.getRow())
).collect(Collectors.toList());

如果 api 中的某个项目包含多个匹配的配置(基于您的数据,这似乎不太可能),这将生成多个条目。

关于java - 根据映射到类的 yaml 中的条件查找 "row"字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59677971/

相关文章:

Spring Boot YAML 配置

c++ - 如何为 visual studio 2013 安装 YAML-cpp?

linux - 如何获取远程主机的环境变量

java - DatabaseException : Can't convert object of type java. lang.String 类型 StreetClass

java - 在 JPanel 上显示 jpg 图像

java - 管理 Akka Actor 系统生命周期

azure - 在 Docker 文件中挂载 Azure Blob 存储

java - X509证书CSR DN解析

java - 限制和无序流的内部变化

java - 使用ant加载yaml属性文件