本文共 2348 字,大约阅读时间需要 7 分钟。
java.util.Stream 表示能应用在一组元素上一次执行的操作序列。Stream 操作分为中间操作或者最终操作两种,最终操作返回一特定类型的计算结果,而中间操作返回Stream本身,这样你就可以将多个操作依次串起来。通过Stream中的常用函数Filter(过滤)、Map(映射)、Sort(排序)、Count(计数) 等常用函数接口,我们可以很方便的对数据流处理,极大地简化编程,提高代码可读性。
import java.util.ArrayList;import java.util.List;public class StreamDemo { int age; String name; public StreamDemo(int age,String name) { this.age=age; this.name=name; } public static void main(String[] args) { ListstringList = new ArrayList<>(); stringList.add(new StreamDemo(10,"ddd2")); stringList.add(new StreamDemo(13,"aba2")); stringList.add(new StreamDemo(12,"bab1")); stringList.add(new StreamDemo(15,"aca1")); stringList.add(new StreamDemo(9,"bcb3")); stringList.add(new StreamDemo(18,"cdc")); stringList.add(new StreamDemo(20,"bdb2")); stringList.add(new StreamDemo(21,"dad1")); stringList.stream() .filter((s)->s.name.startsWith("a")&&s.age>10) //过滤条件 .sorted((o1,o2)->o2.age-o1.age) //排序规则:按照年龄从大到小 .map((s)->{ s.name.replace('b','e');s.age++;return s;}) //映射函数:年龄自增,姓名字符替换 .forEach((s)->{ System.out.println("年龄:"+s.age+"\t姓名:"+s.name);}); //打印对象 }}
import java.util.ArrayList;import java.util.List;public class StreamDemo { int age; String name; public StreamDemo(int age,String name) { this.age=age; this.name=name; } public static void main(String[] args) { ListstringList = new ArrayList<>(); stringList.add(new StreamDemo(10,"ddd2")); stringList.add(new StreamDemo(13,"aba2")); stringList.add(new StreamDemo(12,"bab1")); stringList.add(new StreamDemo(15,"aca1")); stringList.add(new StreamDemo(9,"bcb3")); stringList.add(new StreamDemo(18,"cdc")); stringList.add(new StreamDemo(20,"bdb2")); stringList.add(new StreamDemo(21,"dad1")); stringList.stream() .filter((s)->s.name.startsWith("a")&&s.age>10) //过滤条件 .sorted((o1,o2)->o2.age-o1.age) //排序规则:按照年龄从大到小 .map((s)->s.name.replace('b','e')) //映射函数:姓名字符替换,返回字符串 .forEach(System.out::println); //打印字符串姓名 }}
当然,代码未展示Stream中的其他函数接口,包括并行计算、计数等等,读者可以下去自行探究。希望我的总结对你们有帮助,博客中相关问题欢迎询问探讨,相互学习。QQ:1476154032,以上。
转载地址:http://lxzni.baihongyu.com/