[英]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.