我正在尝试通过使用Java 8流遍历嵌入式列表来返回数据

里克:

我正在努力返回仅包含item.baz.fooz =='snafu'的项目。我已经匿名了下面的代码和源。您的协助将不胜感激。我的数据来源:

{
  "data": {
    "searches": [
      {
        "apples": [
          {
            "pears": [
              {
                "sets": [
                  {
                    "items": [
                      {
                        "baz": {
                          "fooz": {
                            "unit": "snafu"
                          }
                        }
                      }
                    ]
                  }
                ]
              }
            ]
          }
        ]
      }
    ]
  }
}

我失败的代码:

List<Item> items =
    response.data.searches.stream()
    .flatMap(
        search -> search.apples.forEach(
           apple -> apple.pears.forEach(
               pear -> pear.sets.forEach(
                   set -> set.items.stream()
                      .filter(item -> item.baz.fooz.unit.equals("snafu"))
                      .collect(Collectors.toList())))));

这些失败是(其中包括):

Incompatible type. Required List<Foo> but 'flatmap' was inferred to Stream<R>: no instances of type variable R List<Foo>
他们是 :

不要使用forEach,您需要多个flatMaps:

List<Item> snoozles =
    response.data
            .searches
            .stream() // Stream<Search>
            .flatMap(search -> search.apples.stream()) // Stream<Apple>
            .flatMap(apple -> apple.pears.stream()) // Stream<Pear>
            .flatMap(pear -> pear.sets.stream()) // Stream<Set>
            .flatMap(set -> set.items.stream() 
                               .filter(item -> item.baz.fooz.unit.equals("snafu"))) // Stream<Item>
            .collect(Collectors.toList()); // List<Item>

或者(按照Holger的建议):

List<Item> snoozles =
    response.data
            .searches
            .stream() // Stream<Search>
            .flatMap(search -> search.apples.stream()) // Stream<Apple>
            .flatMap(apple -> apple.pears.stream()) // Stream<Pear>
            .flatMap(pear -> pear.sets.stream()) // Stream<Set>
            .flatMap(set -> set.items.stream()) // Stream<Item>
            .filter(item -> item.baz.fooz.unit.equals("snafu")) // Stream<Item>
            .collect(Collectors.toList()); // List<Item>

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

我正在尝试通过使用Laravel中的外键从表中删除数据

我正在尝试通过使用PHP的查询来更新数据,但数据库中的数据没有变化

我正在尝试通过JSX反应中的嵌入式CSS添加背景图像,但它没有更新

使用嵌入式列表的python队列

我正在尝试对网站使用目录遍历攻击

我正在尝试使用Java更新oracle数据库中的密码。难道我做错了什么?

Python 2.7.10 Pygame 1.9.1。我正在尝试通过增加或减少5来更改列表的值

我正在尝试使用响应式 API 休息

我正在尝试通过完成子节点来返回列表

我正在尝试使用pandas旋转数据集

使用流遍历列表时如何获取元素索引?

我正在尝试使用 axios 和本地 json 文件通过单击按钮来呈现随机数组元素。我错过了什么?

搜索在使用Spring数据蒙戈嵌入式阵列文本列表

尝试通过 js 使用 fetch。它正在返回,就好像它实际上没有调用任何数据一样。我哪里错了?

Docusign嵌入式签名-会话过期时,我可以给出一个不同的返回URL来显示吗?

VueJ:使用嵌入式模板从嵌入式组件内部访问数据

我正在尝试创建一个下拉菜单来存储餐厅菜单中的项目,并使用香草JavaScript通过将对象数组传递给它

我目前正在通过添加三个输入元素的值来尝试简单加法

我正在尝试创建一个 javascript 函数,该函数使用通过 HTML 输入的值并返回一个函数

我正在尝试使用 for 语句来清除列表,但它失败了。for语句是如何执行的?

Java RequestDispatcher在Jetty嵌入式应用中返回null

我正在尝试使用公会的ID从公会获取成员,但是现在我正在使用的变量返回Undefined

我正在尝试通过将数据库连接到注册页面来创建登录网站

我的嵌入式数据库位置是什么

我正在尝试使用jquery插件来验证我的表单,但删除类却无法正常工作

我正在尝试使用适配器来增加我的recyclerview活动

我正在尝试使用 mockito 注释来测试我的代码,但无法解决 MockitoException

我正在尝试将 MongoDB 字段中的数据逐个输入到我的 Java 代码中

如何通过使用嵌入式JavaScript按下Enter来触发onclick?