Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/381.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java8流:解析映射列表_Java_Java 8_Java Stream - Fatal编程技术网

Java8流:解析映射列表

Java8流:解析映射列表,java,java-8,java-stream,Java,Java 8,Java Stream,我正在尝试使用流API从地图列表中获取长列表 这是类的外观: class Report Bean{ private MarshallableMap data; } 对象数据包含如下记录:(“ID”,1),(“Name”,“TestName”) 我需要从ReportBean列表中获取ID列表。 这就是我尝试过的: List<Long> ids = reportBeans.stream().flatMap( m -> m.getDa

我正在尝试使用流API从地图列表中获取长列表

这是类的外观:

class Report Bean{
   private MarshallableMap data;
}
对象数据包含如下记录:(“ID”,1),(“Name”,“TestName”)

我需要从ReportBean列表中获取ID列表。 这就是我尝试过的:

 List<Long> ids = reportBeans.stream().flatMap(
                    m -> m.getData().entrySet().stream()
                            .filter(e -> e.getKey().equals("ID"))
                            .map(Map.Entry::getValue)
                            .map(Long.class::cast))
                            .collect(Collectors.toList());
List id=reportBeans.stream().flatMap(
m->m.getData().entrySet().stream()
.filter(e->e.getKey().equals(“ID”))
.map(map.Entry::getValue)
.map(Long.class::cast))
.collect(Collectors.toList());

我得到一张空名单。求你了,我需要建议。谢谢

有很多不必要的流媒体正在进行。我认为这更适合您的需要:

reportBeans.stream()
  .map(r -> r.getData().get("ID"))
  .filter(Objects::nonNull)
  .map(Long.class:cast)
  .collect(toList());

您尚未显示类“MarshallLableMap”的外观。我们有必要提供准确的答案。但是,如果“数据”字段的类型为
Map
,则可以通过以下方式获取ID列表:

     List<Long> ids = reportBeans.stream()
        .flatMap(
                m -> (m.getData().entrySet().stream()
                        .filter(e -> "ID".equals(e.getKey()))
                        .map(e -> Long.valueOf(e.getValue())))
        )
        .collect(Collectors.toList());
List id=reportBeans.stream()
.平面图(
m->(m.getData().entrySet().stream())
.filter(e->“ID”.equals(e.getKey()))
.map(e->Long.valueOf(e.getValue()))
)
.collect(Collectors.toList());

您确定有任何bean的密钥正好是
的“ID”
?请共享
MarshallLableMap
所包含的内容。
ID
是如何关联的。也许是类名
ReportBean
中的一个输入错误,你们为什么坚持迭代
entrySet
?@MikhailProkhorov,是谁坚持的?我的答案只是在OP的代码中提供了一个修复程序,只需要很少的更改。总有一些方法可以改进一个脱离主题的程序。