高端网站建设谷美成都企业管理培训
news/
2025/9/23 12:42:29/
文章来源:
高端网站建设谷美,成都企业管理培训,seo公司优化,如何更改WordPress登录密码Stream 什么是Stream流#xff1f; 在Java 8中#xff0c;得益于Lambda所带来的函数式编程#xff0c; 引入了一个全新的Stream流概念 #xff0c;用于解决已有集合/数组类库有的弊端。 Stream流能解决什么问题? 可以解决已有集合类库或者数组API的弊端。 Stream认为集合…Stream 什么是Stream流 在Java 8中得益于Lambda所带来的函数式编程 引入了一个全新的Stream流概念 用于解决已有集合/数组类库有的弊端。 Stream流能解决什么问题? 可以解决已有集合类库或者数组API的弊端。 Stream认为集合和数组操作的API很不好用所以采用了Stream流简化集合和数组的操作 小结 Stream流是用来简化集合类库或者数组API的弊端。 Stream流其实就一根传送带元素在上面可以被Stream流操作。 需求从集合中筛选出所有姓张的人出来。然后再找出姓名长度是3的人。 传统写法
public class StreamDemo01 {public static void main(String[] args) {ListString list new ArrayList();list.add(张无忌);list.add(周芷若);list.add(赵敏);list.add(张强);list.add(张三丰);//1.找姓张的人ListString Z_list new ArrayList();for (String s : list) {if(s.startsWith(张)){Z_list.add(s);}}System.out.println(Z_list);//2.姓名长度为3ListString Z_Long_list new ArrayList();for (String s : Z_list) {if(s.length() 3) Z_Long_list.add(s);}System.out.println(Z_Long_list);}
}Stream流写法
public class StreamDemo01 {public static void main(String[] args) {//需求从集合中筛选出所有姓张的人出来。然后再找出姓名长度是3的人。ListString list new ArrayList();list.add(张无忌);list.add(周芷若);list.add(赵敏);list.add(张强);list.add(张三丰);list.stream().filter(s - s.startsWith(张)).filter(s - s.length() 3).forEach(System.out::println);}
}如上见得stream基于函数式编程,更加简单 他的限制流filter可以链式编程最后遍历 Stream流的获取 Stream流式思想的核心 先得到集合或者数组的Stream流就是一根传送带然后就用这个Stream流操作集合或者数组的元素。然后用Stream流简化替代集合操作的API. 集合获取流的API: (1) default Stream stream(); 小结 集合获取Stream流用: stream(); 数组Arrays.stream(数组) / Stream.of(数组); public class StreamDemo01 {public static void main(String[] args) {/** --------------------Collection集合获取流------------------------------- */// Collection集合如何获取Stream流。CollectionString c new ArrayList();StreamString ss c.stream();/** --------------------Map集合获取流------------------------------- */MapString, Integer map new HashMap();// 先获取键的Stream流。StreamString keyss map.keySet().stream();// 在获取值的Stream流StreamInteger valuess map.values().stream();// 获取键值对的Stream流keyvalue Map.EntryString,IntegerStreamMap.EntryString,Integer keyAndValues map.entrySet().stream();/** ---------------------数组获取流------------------------------ */// 数组也有Stream流。String[] arrs new String[]{Java, JavaEE ,Spring Boot};StreamString arrsSS1 Arrays.stream(arrs);StreamString arrsSS2 Stream.of(arrs);}
}Stream的常用API forEach : 逐一处理(遍历) count统计个数 – long count(); filter : 过滤元素 – Stream filter(Predicate? super T predicate) limit : 取前几个元素 skip : 跳过前几个 map : 加工方法 concat : 合并流。 public class StreamDemo03 {public static void main(String[] args) {ListString list new ArrayList();list.add(张无忌);list.add(周芷若);list.add(赵敏);list.add(张强);list.add(张三丰);list.add(张三丰);//遍历foreachlist.stream().filter(s - s.length() 3).filter(s - s.startsWith(张)).forEach(System.out::println);//统计个数countlong count list.stream().filter(s - s.length() 3).filter(s - s.startsWith(张)).count();System.out.println(count);//取前几个list.stream().filter(s - s.length() 3).limit(2).forEach(System.out::println);//跳过前几个list.stream().filter(s - s.length() 3).skip(2).forEach(System.out::println);//map方法(映射)加工方法 将原元素加工后放上去/*将所有名称都加上小小的……*/list.stream().map(s - 小小的 s).forEach(System.out::println);/*将名称都加工成学生对象*///list.stream().map(s - new Student(s)).forEach(System.out::println);list.stream().map(Student::new).forEach(System.out::println);//构造器引用/*** concat合并流*///数组流StreamInteger s1 Stream.of(10,20,30,40);//集合流StreamString s2 list.stream();//合并流 类型不同可用Object接 只能两两合并StreamObject allStream Stream.concat(s1,s2);allStream.forEach(System.out::println);}
}
综合案例
public class StreamDemo04 {public static void main(String[] args) {ListString one new ArrayList();one.add(迪丽热巴);one.add(宋远桥);one.add(苏星河);one.add(老子);one.add(庄子);one.add(孙子);one.add(洪七公);ListString two new ArrayList();two.add(古力娜扎);two.add(张无忌);two.add(张三丰);two.add(赵丽颖);two.add(张二狗);two.add(张天爱);two.add(张三);/*** 1. 第一个队伍只要名字为3个字的成员姓名* 2. 第一个队伍筛选之后只要前3个人*/StreamString oneStream one.stream().filter(s - s.length() 3).limit(3);/*** 3. 第二个队伍只要姓张的成员姓名* 4. 第二个队伍筛选之后不要前2个人* 5. 将两个队伍合并为一个队伍*/StreamString twoStream two.stream().filter(s - s.startsWith(张)).skip(2);StreamString allStream Stream.concat(oneStream,twoStream);/*** 6. 根据姓名创建Student对象 (加工)* 7. 打印整个队伍的Student对象信息。*/allStream.map(Student::new).forEach(System.out::println);}
}Stream终结与非终结方法 终结方法一旦Stream调用了终结方法流的操作就全部终结了不能继续使用 只能创建新的Stream操作。 终结方法 foreach , count。 非终结方法每次调用完成以后返回一个新的流对象, 可以继续使用支持链式编程 public class StreamDemo {public static void main(String[] args) {ListString list new ArrayList();list.add(张无忌);list.add(周芷若);list.add(赵敏);list.add(张强);list.add(张三丰);list.add(张三丰);// foreach终结方法list.stream().filter(s - s.startsWith(张)).filter(s - s.length() 3).forEach(System.out::println);long count list.stream().filter(s - s.startsWith(张)).filter(s - s.length() 3).count();System.out.println(count);}
}收集Stream流 引入 Stream的作用是把集合转换成一根传送带借用Stream流的强大功能进行的操作。但是实际开发中数据最终的形式还是应该是集合最终Stream流操作完毕以后还是要转换成集合。这就是收集Stream流。 收集Stream流的含义就是把Stream流的数据转回到集合中去。 Stream流手段。 集合才是目的。 小结 收集Stream流的含义就是把Stream流的数据转回到集合中去。 熟练函数式编程如Lambda表达式简化函数式接口的匿名内部类形式以及四种方法引用简化Lambda表达式以及流式编程思想如Stream简化集合或者数组的操作。 public class StreamDemo {public static void main(String[] args) {ListString list new ArrayList();list.add(张无忌);list.add(周芷若);list.add(赵敏);list.add(张强);list.add(张三丰);list.add(张三丰);StreamString zhangLists list.stream().filter(s - s.startsWith(张));// 把stream流转换成Set集合。SetString sets zhangLists.collect(Collectors.toSet());System.out.println(sets);// 把stream流转换成List集合。StreamString zhangLists1 list.stream().filter(s - s.startsWith(张));ListString lists zhangLists1.collect(Collectors.toList());System.out.println(lists);// 把stream流转换成数组。StreamString zhangLists2 list.stream().filter(s - s.startsWith(张));Object[] arrs zhangLists2.toArray();// 可以借用构造器引用申明转换成的数组类型String[] arrs1 zhangLists2.toArray(String[]::new);}
}
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/912569.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!