ひしだまの変更履歴

ひしだまHPの更新履歴。
主にTRPGリプレイの元ネタ集、プログラミング技術メモと自作ソフト、好きなゲームや音楽です。

Streamを返すメソッド

2014-04-29 15:53:40 | PG(Java)

前回までのあらすじ
ジャバ八村にやってきた俺たちは、Stream使い方を会得することは出来たが、Streamを作る方法については、いまだ明かされない謎が残っていた…。


という訳で、Java8のStreamの勉強の総仕上げ。
Streamを使おうと思ったら、Streamインスタンスを生成する必要がある。
Streamクラスのof()やIntStreamのrange()等のStreamクラスに直接用意されているメソッドは探しやすいし、List等のコレクションからstream()でStreamを取得するのも分かり易いが、それ以外にもStreamを返すメソッドがある。 

クラス名メソッド名説明
java.lang.CharSequence chars 文字(char)のStream
codePoints 文字(コードポイント)のStream
java.util.regex.Pattern splitAsStream パターンで分割した各文字列のStream
java.io.BufferedReader lines 読み込んだ各行のStream
java.nio.file.Files lines ファイルの各行のStream
list ディレクトリー直下の各パス(ファイルやディレクトリー)のStream
walk サブディレクトリーまで含めた各パスのStream
find 条件指定可能なFiles#walk()
java.util.jar.JarFile stream jarファイル内のエントリー(JarEntry)のStream
java.util.zip.ZipFile stream zipファイル内のエントリー(ZipEntry)のStream

CharSequence(StringやStringBuilder等)のchars()やcodePoints()は、文字列を「文字の並び」として扱うのに便利。
まぁ、IntStreamで扱わないといけないので複雑になってしまう部分はあるけど。
(Scalaの方がシンプルなので、初心者だったらむしろScalaの書き方の方が分かりやすそうだが^^;)
この辺り、将来的にIntStreamが拡張されてもう少し便利になるような予感がする。
(少なくとも、int用のCollectorを受け取るcollectメソッドは有ってもいいんじゃないか?)

BufferedReader#lines()も便利だが、ファイルから読み込む場合はFiles#lines()を使うことの方が多そう。

ディレクトリー配下のファイル(やディレクトリー)のパス一覧を取得するFiles#list()やwalk()もnewDirectoryStream()やwalkFileTree()に比べたらずっとシンプル。
(Files#newDirectoryStream()はDirectoryStreamという(Listのような)オブジェクトを返すのだが、Java8のStreamが先に導入されていたら、きっとDirectoryStreamは作られなかっただろうと思う^^;)


Java8のStream関連で調べたかったことは、ひとまずこれで完了かな。


コメント    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« Java8のStreamを一通り見てみた | トップ | DMDL EditorX 連休中に作った... »
最新の画像もっと見る

コメントを投稿

PG(Java)」カテゴリの最新記事