倭マン's BLOG

くだらない日々の日記書いてます。 たまにプログラミング関連の記事書いてます。 書いてます。

java.lang/java.util

Java の正規表現 API を試す

この前、Groovy の GDK でグループを含む正規表現を試してみました。waman.hatenablog.com 今回は根本に還って、Java の正規表現 API (java.util.regex) の使い方をザッと試してみます。 試した内容は Pattern, Matcher クラスに定義されているメソッドの基…

Groovy でグループを使った正規表現マッチを試す

なんとなく今まで正規表現を回避してたんだけど、定型文字列を String のメソッドだけで解析するの面倒すぎるので、Groovy パワーであれこれ試してみました。 Groovy 使うと、グループを使った正規表現でマッチしたグループの内容を List の要素アクセスのよ…

Stream インターフェースの親である BaseStream がちゃんとある

以前の記事『Stream インターフェースの親として BaseStream というのがあるようで・・・』で java.util.stream.Stream インターフェースの親タイプとして BaseStream というのがあるようだが公開されてないか削除された、ということを書きましたが、java8-e…

蒐集してやんよ java.util.stream.Collectors クラス (6) - 独自コレクタを作る必要はない!? -

Java の Collectors クラスに定義されているメソッドを見ていくシリーズ(目次)。 前回、簡単な独自コレクタを作ってみましたが、作ったコレクタをあちこちで使い回したりしないなら、ラムダ式と Stream インターフェースに定義されているメソッドで事足り…

蒐集してやんよ java.util.stream.Collectors クラス (5) - 独自コレクタを作ってみよう! -

Java の Collectors クラスに定義されているメソッドを見ていくシリーズ(目次)。 前回 parallel ストリームと concurrent コレクタに関してあれこれ試したワリにはにいまいちしっくり来てない状態なのですが、今回は独自コレクタを作ってみます。あまりキ…

蒐集してやんよ java.util.stream.Collectors クラス (4) - parallel ストリーム と concurrent コレクタ -

Java の Collectors クラスに定義されているメソッドを見ていくシリーズ(目次)。 Stream や Collector に関する記事をそこそこ書いてきて今さらいうのもアレですが、parallel ストリームと concurrent コレクタに関してちょっと(というか根本的に?)勘違…

蒐集してやんよ java.util.stream.Collectors クラス (3) - 内蔵コレクタの特性 -

Java の Collectors クラスに定義されているメソッドを見ていくシリーズ(目次)。 前回までで java.util.stream.Collectors クラスで取得できる Collector オブジェクトの使い方を見ました。 そこでは基本的な使い方を見ていたので Collector インターフェ…

蒐集してやんよ java.util.stream.Collectors クラス (2) - Map を返す Collector -

Java の Collectors クラスに定義されているメソッドを見ていくシリーズ(目次)。 前回に引き続き、今回は Map を返す Collector を見ていきます。 前回にも増して引数の型パラメータを見てるとクラクラするぅ。 まぁ、前回同様、返り値の Collector の第2…

蒐集してやんよ java.util.stream.Collectors クラス (1) - Map 以外を返す Collector -

今回から何回かに分けて java.util.stream パッケージに定義されている Collectors クラスに定義されているメソッドを見ていきます。目次 Map 以外を返す Collector Map を返す Collector 内蔵コレクタの特性 parallel ストリーム と concurrent コレクタ 独…

小川のせせらぎもやがてはうねる奔流に Stream インターフェース (8) - プリミティブ型ストリーム -

Java の Stream インターフェースに定義されているメソッドを見ていくシリーズ(目次)。 前回までで Stream インターフェースに定義されているメソッドは大体見たので、今回はプリミティブ型のストリーム(以下、プリミティブ型ストリーム)を見ていきます…

小川のせせらぎもやがてはうねる奔流に Stream インターフェース (7) - static メソッド -

Java の Stream インターフェースに定義されているメソッドを見ていくシリーズ(目次)。 今回は Stream インターフェースに定義されている static メソッドを見ていきます。 というか、Java 8 からインターフェースに static メソッドが定義できるようにな…

小川のせせらぎもやがてはうねる奔流に Stream インターフェース (6) - stateful intermediate operators -

Java の Stream インターフェースに定義されているメソッドを見ていくシリーズ(目次)。 今回は Stream インターフェースに定義されている stateful intermediate operator に対応するメソッドを見ていきます。 stateful intermediate oprerator は「状態保…

小川のせせらぎもやがてはうねる奔流に Stream インターフェース (5) - intermediate operators part 2 -

Java の Stream インターフェースに定義されているメソッドを見ていくシリーズ(目次)。 今回は前回に引き続き intermediate operator (中間演算子)を見ていきます。 今回扱うのはストリームの要素はそのままで、その種類を変更する中間演算子です。 スト…

Stream インターフェースの親として BaseStream というのがあるようで・・・

Java 8 ea-b90 の話ですが、java.util.stream.Stream インターフェースのスーパーインターフェースとして、java.util.stream.BaseStream というインターフェースがあるようです。 java.util.stream の package private なインターフェースなので直接参照する…

小川のせせらぎもやがてはうねる奔流に Stream インターフェース (4) - intermediate operators part 1 -

Java の Stream インターフェースに定義されているメソッドを見ていくシリーズ(目次)。 今回からは java.util.stream.Stream インターフェースに定義されている intermediate operators を見ていきます。 「intermediate operator」は訳すと「中間演算子」…

小川のせせらぎもやがてはうねる奔流に Stream インターフェース (3) - short-circuiting terminal operators -

Java の Stream インターフェースに定義されているメソッドを見ていくシリーズ(目次)。 今回は Stream インターフェースに定義されている short-circuiting terminal operator に分類されるメソッドを見ていきます。 terminal operator は前回まで扱ってい…

Stream#collect() の型推論は correct ?

最近 Java 8 Project Lambda をちょっとイジってるんですが、そこでコンパイラに怒られた話(Java 8 ea-b90)。 本質的には Java 8 がどうこうというより Generics の話かと思いますが。以前の記事で java.util.stream.Stream インターフェースに定義されて…

小川のせせらぎもやがてはうねる奔流に Stream インターフェース (2) - terminal operators part 2 -

Java の Stream インターフェースに定義されているメソッドを見ていくシリーズ(目次)。 今回は java.util.stream.Stream インターフェースに定義されている terminal operator (終端演算子) の残りを見ていきます。 どれも Stream の要素を集めた「コン…

小川のせせらぎもやがてはうねる奔流に Stream インターフェース (1) - terminal operators part 1 -

OpenJDK にて JDK 8 の Feature Complete がリリースされたので、暇を見つけて Java 8 の新機能をあれこれイジっていこうかなと。 使用する JDK のバージョンは 8-ea-b90 です。ってことで、まずは java.util.stream.Stream インターフェースに定義されてい…

java.util.function パッケージ 【追記・修正あり】

拙者、あんまり正式リリースされてない API って扱わない保守的な人間なんですが、ふと Java8 で導入されるラムダ式ってのがどんな感じになるのか気になったのでドキュメントを探してみました。 ラムダ式に対応したドキュメントや JavaDoc は普通の「JDK〓 8…

死刑執行中 ExecutorService 終了中

前回は ExecutorService を使ったタスクの依頼・実行方法を見ました。 今回は ExecutorService のシャットダウン・終了方法を見ていきます。 ExecutorService を使うプログラムでは必ずシャットダウンを行う必要があるので忘れずに。記事内容 ExecutorServic…

死刑執行中 ExecutorService 実行中

最近『Java並行処理プログラミング ―その「基盤」と「最新API」を究める―』で Java の並行処理プログラミングを勉強中なんですが、ExecutorService の使い方あたりで完全に消化不良に陥ってしまったので、知識の整理を敢行。 今回は ExecutorService を使っ…

Groovy で Guarded Suspension パターン

『増補改訂版 Java言語で学ぶデザインパターン入門 マルチスレッド編』に載っているデザインパターンを Groovy/GPars で書こうシリーズ、今回は Guarded Suspension パターン。 Guarded Wait, Spin Lock などとも呼ばれるそうです。このパターンは java.util…

Fork/Join で並列和

前回 Java 7 を使う環境設定を行ったので、ついでにちょっと Java 7 をいじってみます*1。 今回見ていくのは java.util.concurrent パッケージに追加された Fork/Join フレームワークです。 Fork/Join は大量の計算を小さい部分に分けてマルチスレッドで計算…

Java のロギング API ちょっと不思議

以前から Java のロギング API、java.util.logging で不思議に思ってた挙動。確認 普通に使う分にはこんな感じにします(コードは Groovy): import java.util.logging.* def log = Logger.getLogger('logging') log.warning('warning') log.info('info') l…

いまさら!? Class クラス (7) : 特定のクラスに固有のメソッド

Java の Class クラスに定義されているメソッドを見ていくシリーズ(目次)。 今回は Class クラスに定義されているメソッドのうち、特定の型に特有のメソッドを見ていきます。 特定の型に特有のメソッドとは、例えば「配列に対して要素の型を返すメソッド」…

いまさら!? Class クラス (8) : リソース、セキュリティ

Java の Class クラスに定義されているメソッドを見ていくシリーズ(目次)。 今回でとりあえず Class クラスのメソッドはコンプリート!(Java 6) 最後に残ってるのはよくわからんのバッカリなので流します。クラスローダ ClassLoaderまずはクラスのクラスロ…

いまさら!? Class クラス (6) : メンバへのアクセス

Java の Class クラスに定義されているメソッドを見ていくシリーズ(目次)。 今回はメンバへのアクセスを行うメソッド。 ここで、メンバとして扱うのは フィールド コンストラクタ メソッド 内部クラス の4つです。メンバへのアクセス一般各メンバを見てい…

いまさら!? Class クラス (5) : クラス階層とインスタンス

Java の Class クラスに定義されているメソッドを見ていくシリーズ(目次)。 今回はクラス階層とインスタンスに関連するメソッドを見ていきます。クラス階層 Class Hierarchyまずはクラス階層に関連するメソッド。 これらは返り値もしくは引数に Class オブ…

いまさら!? Class クラス (4) : クラス宣言

Java の Class クラスに定義されているメソッドを見ていくシリーズ(目次)。 今回は Class クラスに定義されているメソッドのうち、クラスの宣言に関するメソッドを見ていきます。クラス宣言に関するメソッドクラス宣言に関するメソッド*1は、ここでは以下…