繁体   English   中英

如何将 Scala for loop 转换为 Java

[英]How do I can convert Scala for loop into Java

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

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

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

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

每次我收到编译时错误,例如:“方法 foreach(Function1<Option,U>) 对于 Seq<Option> 类型不明确”

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

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

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

您可以使用两种方式中的任何一种(假设 toGeoJson 的返回类型是字符串)

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM