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