JDK8新特性Stream流操作

不管现实多么惨不忍睹,都要持之以恒地相信,这只是黎明前短暂的黑暗而已。不要惶恐眼前的难关迈不过去,不要担心此刻的付出没有回报,别再花时间等待天降好运。真诚做人,努力做事!你想要的,岁月都会给你。JDK8新特性Stream流操作,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

 1 package stream;
 2 
 3 import java.util.ArrayList;
 4 import java.util.function.Function;
 5 import java.util.stream.Stream;
 6 
 7 public class test {
 8     public static void main(String[] args) {
 9         ArrayList<String> one = new ArrayList<>();
10         one.add("迪丽热巴");
11         one.add("宋远桥");
12         one.add("苏星河");
13         one.add("石破天");
14         one.add("石中玉");
15         one.add("老子");
16         one.add("庄子");
17         one.add("洪七公");
18         //第二支队伍
19         ArrayList<String> two = new ArrayList<>();
20         two.add("古力娜扎");
21         two.add("张无忌");
22         two.add("赵丽颖");
23         two.add("张三丰");
24         two.add("尼古拉斯赵四");
25         two.add("张天爱");
26         two.add("张二狗");
27 
28         //1. 第一个队伍只要名字为3个字的成员姓名;存储到一个新集合中。
29         Stream<String> stream = one.stream();
30         Stream<String> stringStream = stream.filter((String name) -> name.length() == 3);
31 //        stringStream.forEach((String name)-> System.out.println(name));
32 
33         //2. 第一个队伍筛选之后只要前3个人;存储到一个新集合中。
34         Stream<String> limit = stringStream.limit(3);
35 //        limit.forEach((String name)-> System.out.println(name));
36 
37         //3. 第二个队伍只要姓张的成员姓名;存储到一个新集合中。
38         Stream<String> stream1 = two.stream();
39         Stream<String> zhanglist = stream1.filter((String name) -> name.startsWith("张"));
40 //        zhanglist.forEach((String name)-> System.out.println(name));
41 
42         //4. 第二个队伍筛选之后不要前2个人;存储到一个新集合中。
43         Stream<String> skip = zhanglist.skip(2);
44 //        skip.forEach((String name)-> System.out.println(name));
45 
46         //5. 将两个队伍合并为一个队伍;存储到一个新集合中。
47         Stream<String> concat = Stream.concat(limit, skip);
48 //        concat.forEach((String name)-> System.out.println(name));
49 
50         //6. 根据姓名创建 Person 对象;存储到一个新集合中。
51         Stream<Person> personStream = concat.map((String name) -> new Person(name));
52 
53         //7. 打印整个队伍的Person对象信息。
54         personStream.forEach((Person person) -> System.out.println(person));
55     }
56 
57 }
# 注:代码中注释部分 是由于如果直接打印 ,该流对象就会失效,后续操作无法进行。

创建流对象的两种方式

1 java.util.stream.Stream<T>是Java 8新加入的最常用的流接口。(这并不是一个函数式接口。)
2 获取一个流非常简单,有以下几种常用的方式:
3         - 所有的Collection集合都可以通过stream默认方法获取流;
4             default Stream<E> stream​()
5         - Stream接口的静态方法of可以获取数组对应的流。
6             static <T> Stream<T> of​(T... values)
7             参数是一个可变参数,那么我们就可以传递一个数组
forEach()方法和count()方法属于终结方法,返回的对象是最终结果。像filter()、map()、concat()、skip()、limit()等返回的仍然是stream对象。而且filter()、map()、concat()、skip()、limit()
这些方法内部可以使用lambda表达式。

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/187701.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!