はじめに
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
非常に便利ですよね。
積極的に使っていき、直感的に理解できるコードを目指していきたいものです。
短いですが以上です。ありがとうございました!