CUBは子供の白熊

Java SE 8 実践プログラミングの練習問題を解く

2015-01-19から1日間の記事一覧

第2章 ストリーム API の使い方 : 問題 6 : Stream の効率的な生成

問題 6 文字列からCharacterのストリームを生成するメソッドがある。 public static Stream<Character> characterStream(String s) { List<Character> result = new ArrayList<>(); for (char c : s.toCharArray()) result.add(c); return result.stream(); } このメソッドでは、最</character></character>…

第2章 ストリーム API の使い方 : 問題 5 : iterate メソッドによる Stream の生成

問題 5 Stream.iterateを使って乱数の無限ストリームを生成せよ このときMath.randomを呼び出すのではなく、線形合同生成機(Linear Congruential Generator)を直接実装すること 解答 public static LongStream random(long seed) { final long a = 252149039…

第2章 ストリーム API の使い方 : 問題 4 : IntStream の生成

問題 4 整数の配列valuesがある。 int[] values = { 1,4,9,16 }; Stream.of(values) は何になるか? 解答 整数の配列をひとつだけ返すStream<int[]>になる。 さらに問題 ではvaluesからintのストリームを生成するにはどうすればよいか? 解答 IntStream.of(values)を</int[]>…

第2章 ストリーム API の使い方 : 問題 3 : 並列ストリーム

問題 3 ストリーム API で書いた、長い単語の数を求める処理 long count = words.stream() .filter(w -> w.length() > 12) .count(); でstreamではなくparallelStreamを使って並列でカウントした場合の速度の違いを計測せよ 解答 ■ 計測用のコード long star…

第2章 ストリーム API の使い方 : 問題 2 : limit メソッド

問題 2 長い単語のうち最初の5個だけ求める処理を、ストリーム API を使って以下のように書いた。 words.stream() .filter(w -> w.length() > 12) .limit(5) .forEach(System.out::println); この処理で、5番目の長い単語が見つかったらlimitメソッドの前の…

第2章 ストリーム API の使い方 : 問題 1 : ストリーム API を使わないで並列処理

問題 1 長い単語を数える処理を以下のようにforループで行った List<String> words = 〜; int count = 0; for (String w : words) { if (w.length() > 12) count++; } これの並列バージョンを書け 解答 ストリーム API を使えば、ものすごく簡単に書けるのに… まあ挑</string>…