Java ストリームを Scala ストリームに変換するにはどうすればいいですか? 質問する

Java ストリームを Scala ストリームに変換するにはどうすればいいですか? 質問する

Java コードを Scala コードに変換する作業の一環として、Java ストリームをFiles.walk(Paths.get(ROOT))Scala に変換する必要があります。Google で検索しても解決策が見つかりません。asScalaやりません。何かヒントはありますか?

関連するコードは次のとおりです。

import static org.springframework.hateoas.mvc.ControllerLinkBuilder.linkTo;
import static org.springframework.hateoas.mvc.ControllerLinkBuilder.methodOn;

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.stream.Collectors;

// ...snip...

Files.walk(Paths.get(ROOT))
     .filter(path -> !path.equals(Paths.get(ROOT)))
     .map(path -> Paths.get(ROOT).relativize(path))
     .map(path -> linkTo(methodOn(FileUploadController.class).getFile(path.toString())).withRel(path.toString()))
     .collect(Collectors.toList()))

Files.walk(Paths.get(ROOT))戻り値の型はJavaStream<Path>です。

ベストアンサー1

互換レイヤーや前述の実験的な2.11機能を必要とせずに、もう少し良い方法があります。ここによるマルコスパーレイラ

基本的にはイテレータを使用するだけです:

import java.nio.file.{Files, Paths}
import scala.collection.JavaConverters._

Files.list(Paths.get(".")).iterator().asScala

おすすめ記事