5
3

More than 3 years have passed since last update.

はじめに

Java 皆さんお使いでしょうか!
自分は最近何かと書くことが多いですが、 Stream API が実装されてからかなり便利になった気がします。
Stream.forEach や、 Stream.filter といった代表的なものはパッと出てきますが、
あまり使用しないものは出てこなかったりするので、覚書のために残しておきます。

Stream.generate

順序付けされていない、無限Streamを作成します。
乱数の生成など、関連性のない値の作成時に便利です。

ドキュメント:docs

コード

    public static void main(String[] args) {
        Stream<Double> stream = Stream.generate(() -> Math.random());
        stream.limit(5).forEach(System.out::println);
    }

結果

0.022804976867977667
0.06422820749702451
0.7240936837411123
0.9070898332933144
0.6724389714182997

Stream.anyMatch

Predicate<T> をパラメータとして、1つでも条件に合致する値があればtrueを返します。

ドキュメント:docs

コード

    public static void main(String[] args) {
        List<String> strList = Arrays.asList("dog", "cat", "bird");
        boolean match = strList.stream().anyMatch(e -> e.equals("dog"));
        System.out.println(match);
    }

結果

true

Stream.allMatch

Predicate<T> をパラメータとして、全て条件に合致する値であれば trueを返します。

ドキュメント:docs

コード

    public static void main(String[] args) {
        List<String> strList = Arrays.asList("dog", "cat", "bird");
        boolean match = strList.stream().allMatch(e -> e.equals("dog"));
        System.out.println(match);
    }

結果

false

Stream.noneMatch

Predicate<T> をパラメータとして、条件に合致する値が一つも無かったら trueを返します。

ドキュメント:docs

コード

    public static void main(String[] args) {
        List<String> strList = Arrays.asList("dog", "cat", "bird");
        boolean match = strList.stream().noneMatch(e -> e.equals("fish"));
        System.out.println(match);
    }

結果

true

Stream.takeWhile

Predicate<T> をパラメータとして、条件に合致する間の値を返却します。
下記の例では、0未満の数字を返却します。

ドキュメント:docs

コード

    public static void main(String[] args) {
        List<Integer> numList = Arrays.asList(
                -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5
        );
        numList.stream().takeWhile(x -> x < 0).forEach(System.out::println);
    }

結果

-5
-4
-3
-2
-1

Stream.dropWhile

Predicate<T> をパラメータとして、条件に合致しない間の値を返却します。
下記の例では、0以上の数字を返却します。

ドキュメント:docs

コード

    public static void main(String[] args) {
        List<Integer> numList = Arrays.asList(
                -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5
        );
        numList.stream().dropWhile(x -> x < 0).forEach(System.out::println);
    }

結果

0
1
2
3
4
5

最後に

StreamAPI 非常に便利ですよね。
積極的に使っていき、直感的に理解できるコードを目指していきたいものです。
短いですが以上です。ありがとうございました!

5
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
3