LispやLL言語、関数型言語っぽいことをさせるためのものだと思います。
使用例をいくつか挙げておきます。
使用例1:フィルタリング
配列から3の倍数だけを抜き出す
javascript
1console.log([1,2,3,4,5,6,7].filter(function(x) { return (x%3===0); }));
java
1import java.util.List;
2import java.util.Arrays;
3import java.util.stream.Collectors;
4import java.util.stream.Stream;
5
6public class Main {
7 public static void main(String[] args) throws Exception {
8 List<Integer> ary = Arrays.asList(new Integer[]{1,2,3,4,5,6,7});
9 List<Integer> filtered = ary.stream().filter(x -> {return (x%3 == 0);})
10 .collect(Collectors.toList());
11 System.out.println(filtered);
12 }
13}
実行結果
使用例2:畳み込み(fold)
配列の全要素の和を取る
javascript
1console.log([1,2,3,4,5,6,7,8,9,10]
2 .reduce(function(x, y) { return x + y; }, 0));
java
1import java.util.List;
2import java.util.Arrays;
3import java.util.stream.Collectors;
4import java.util.stream.Stream;
5
6public class Main {
7 public static void main(String[] args) throws Exception {
8 List<Integer> ary = Arrays.asList(
9 new Integer[]{1,2,3,4,5,6,7,8,9,10});
10 Integer res = ary.stream()
11 .reduce((x, y) -> {return x + y;}).get();
12 System.out.println(res);
13 }
14}
実行結果
使用例3:マップ演算
配列の全要素を2倍する
javascript
1console.log([1,2,3].map(function(x) { return 2*x; }));
java
1import java.util.List;
2import java.util.Arrays;
3import java.util.stream.Collectors;
4import java.util.stream.Stream;
5
6public class Main {
7 public static void main(String[] args) throws Exception {
8 List<Integer> ary = Arrays.asList(
9 new Integer[]{1,2,3});
10 List<Integer> res = ary.stream()
11 .map(x -> { return 2 * x; })
12 .collect(Collectors.toList());
13 System.out.println(res);
14 }
15}
あれ、C#だともっと簡単にできたはずなんだけどな...
Javaは古参の言語なんで勘弁してやってください。
以下の記事を参考にさせていただきました。
teratail - JavaでJavaScriptのArray.filterのようなことをしたいです。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/08/11 11:18
退会済みユーザー
2017/08/11 11:34
2017/08/11 13:35
2017/08/11 13:45