Java 8 Stream simple usage

I have been using jdk6 before, and now I have used jdk8 in the project. I heard a lot of Java 8 features, and there are a lot of operations, so hurry up and learn.

A new abstraction is added in Java 8, called Stream, which is said to greatly improve programmer productivity and make the code more concise, clean, and efficient. So how exactly is Stream used?

In java 8 collection provides two methods to generate Stream, Stream() creates a serial stream for the collection, and parallelStream() creates a parallel stream for the collection. The commonly used methods of streaming are forEach(), map(), filter(), limit(), sorted(), collectors(), etc. Let's practice using these methods.

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有合并字符串的功能,可以用于返回列表或者字符串。

After understanding the above few simple examples, do you have a preliminary understanding of Stream?

Guess you like

Origin blog.csdn.net/wzs535131/article/details/108040655