読者です 読者をやめる 読者になる 読者になる

同じ条件のStreamを繰り返し作るためのビルダーを書いてみた

スポンサーリンク

同じ条件の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]

書き始めたときは、何か目的があったはずなのですが、今となっては何のためだったかわからなくなりました...