【问题标题】:How do I can convert Scala for loop into Java如何将 Scala for 循环转换为 Java
【发布时间】:2020-07-09 05:01:34
【问题描述】:

这里有几行代码需要转换成Java。

val geojsonSeq = for (kml <- kmlSeq) yield kmlConverter.toGeoJson(kml)

我尝试使用 lamda 运算符在 java 中使用 for 每个循环进行转换,但无法得到它。

kmlSeq.foreach((Function1<Option<Kml>, U>) (f) -> {
            
        });

每次我收到编译时错误,例如: “foreach(Function1

除此之外,如果我要正常使用 java 中的每个循环,例如:

for(Option<Kml> kml : kmlSeq)
        {
            
        }

在这种情况下,kmlSeq 会抛出如下错误: “只能遍历数组或 java.lang.Iterable 的实例” 但在 scala 中,kmlSeq 循环到 Option 对象中。

【问题讨论】:

标签: java scala geojson kml kmz


【解决方案1】:

你可以使用两种方式之一(假设toGeoJson的返回类型是String)

List<String> result = kmlSeq
  .stream()
  .flatMap(kmlOpt -> 
    kmlOpt.map(Stream::of).orElseGet(Stream::empty)
  )
  .map(kml -> kmlConverter.toGeoJson(kml))
  .collect(Collectors.toList());

List<String> result = kmlSeq
  .stream()
  .flatMap(kmlOpt -> 
    kmlOpt.map(kml ->
      Stream.of(kmlConverter.toGeoJson(kml))
    ).orElseGet(Stream::empty)
  )
  .collect(Collectors.toList());

要打印,请执行此操作

result.forEach(System.out::println);

【讨论】:

  • 嗨,Praphull 感谢您提供解决方案,但我在 .stream() 方法上遇到错误,因为“对于 Seq
猜你喜欢
  • 2013-04-17
  • 2020-06-20
  • 2018-03-19
  • 2023-04-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-17
相关资源
最近更新 更多