Java8ストリームの簡単な使用法

以前はjdk6を使用していましたが、現在はプロジェクトでjdk8を使用しています。Java8の機能がたくさんあり、操作も多いので、急いで学んでください。

ストリームと呼ばれる新しい抽象化がJava8に追加されました。これにより、プログラマーの生産性が大幅に向上し、コードがより簡潔、クリーン、効率的になると言われています。では、Streamはどの程度正確に使用されますか?

java 8では、コレクションはStreamを生成する2つのメソッドを提供し、Stream()はコレクションのシリアルストリームを作成し、parallelStream()はコレクションのパラレルストリームを作成します。一般的に使用されるストリーミングのメソッドは、forEach()、map()、filter()、limit()、sorted()、collectors()などです。これらの方法を使って練習しましょう。

1.forEach()方法的使用:
List<Integer> list = Arrays.asList(1,2,4,5,7,9,10);
list.forEach(integer -> System.out.print(integer));
结果:1 2 4 5 7 9 10

从上面可以看出forEach()方法特别的简洁,一个遍历的功能,但是使用非常的方便。

2.filter()方法的使用:
List<Integer> list = Arrays.asList(1,2,4,5,7,9,10);
List<Integer> list2 = list.stream().filter(integer -> integer>2).collect(Collectors.toList());
list2.forEach(integer -> System.out.print(integer));
结果:4 5 7 9 10
filter()方法顾名思义就是过滤的作用,把list转换为流,然后过滤掉其中小于2的值,我们获得大于2的值,
现在可以明显看出,就一行代码就搞定了,简洁,干净。

3.map()方法的使用:
 List<Integer> list = Arrays.asList(1,2,4,5,7,9,10);
 List<Integer> list3 = list.stream().map(integer -> integer*integer).distinct().collect(Collectors.toList());
 list3.forEach(integer -> System.out.print(integer));
结果:1 4 16 25 49 81 100
map()方法的作用就是用于映射每个元素到对应的结果,我们使用map输出了,每个元素的平方数。

4.limit()方法的使用:
 Random random = new Random();
 random.ints().limit(5).forEach(System.out::println);
结果:
1543413029
2109695956
1250657137
1882235781
360808744
limit()方法就是用于获取指定数量的数据,就和mysql的limit方法差不多的感觉。

5.sorted的使用;
Random random = new Random();
random.ints().limit(5).sorted().forEach(System.out::println);
结果:
-1628109474
-403572420
328861527
1602449996
1934258929
sorted()方法的作用就是排序,对我们生成的随机的5个数进行了排序处理。

6.Collectors
 List<String> string = Arrays.asList("abc","def","hgk","");
 List<String> filterString = string.stream().filter(s -> !s.isEmpty()).collect(Collectors.toList());
 System.out.println("过滤列表:"+filterString);
 String mergedString = string.stream().filter(s -> !s.isEmpty()).collect(Collectors.joining(","));
System.out.println("合并后的字符串:"+mergedString);

结果:
过滤列表:[abc, def, hgk]
合并后的字符串:abc,def,hgk

可以看出Collectors有合并字符串的功能,可以用于返回列表或者字符串。

上記のいくつかの簡単な例を理解した後、Streamの予備的な理解がありますか?

おすすめ

転載: blog.csdn.net/wzs535131/article/details/108040655