同じ条件のStreamを繰り返し作るためのビルダーを書いてみました。まったく使いどころが見いだせませんが、、とりあえず書いたので晒しておきます。
Streamの中間処理の流れを定義しておいて、、
Streamer<String, Integer> streamer = Streamer.create(String.class) .map(x -> { try { return Integer.parseInt(x); } catch (NumberFormatException e) { return null; } }) .filter(x -> x != null) .sorted();
Streamの元となるデータを指定することで、Streamを作ります。同じ条件で繰り返しStreamを作れます。
streamer.build(Arrays.asList("a", "2", "1", "", "000")) .collect(Collectors.toList()); // -> [0, 1, 2] streamer.build(Arrays.asList("1", "2", "-1")) .collect(Collectors.toList()); // -> [-1, 1, 2] streamer.build(Arrays.asList("a")) .collect(Collectors.toList()); // -> [] streamer.build(Arrays.asList("100", "abc")) .collect(Collectors.toList()); // -> [100]
書き始めたときは、何か目的があったはずなのですが、今となっては何のためだったかわからなくなりました...