Java8中Stream的筛选,切片与映射怎么用
发表于:2025-01-19 作者:千家信息网编辑
千家信息网最后更新 2025年01月19日,这篇文章将为大家详细讲解有关Java8中Stream的筛选,切片与映射怎么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。使用Stream的三个操作步骤创建Stre
千家信息网最后更新 2025年01月19日Java8中Stream的筛选,切片与映射怎么用
这篇文章将为大家详细讲解有关Java8中Stream的筛选,切片与映射怎么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
使用Stream的三个操作步骤
创建Stream
中间操作
终止操作(终端操作)
@Testpublic void test1(){ //创建Stream //1.可以通过Collection系列集合提供的stream()获取串行流或parallelStream()获取并行流 List
list = new ArrayList<>(); Stream stream1 = list.stream(); //2.通过Arrays中的静态方法stream()获取数组流 Employee[] emps = new Employee[10]; Stream stream2 = Arrays.stream(emps); //3.通过Stream类中的静态方法of() Stream stream3 = Stream.of("aa", "bb", "cc"); //4.创建无限流 //通过迭代创建无限流 Stream stream4 = Stream.iterate(0, (x) -> x + 2); //中间操作和终止操作 stream4.limit(10).forEach(System.out::println); //通过生成随机数创建无限流 Stream.generate(() -> Math.random()) .limit(5) .forEach(System.out::println);} 内部迭代与外部迭代
内部迭代:迭代操作由Stream API自己完成
外部迭代:由自己写的程序完成//内部迭代:迭代操作由Stream API完成@Testpublic void test1(){ //中间操作:不会执行任何操作 Stream
employeeStream = employees.stream() .filter((e) -> { System.out.println("Stream API的中间操作"); return e.getAge() > 35; }); //终止操作:一次性执行全部内容,即"惰性求值" employeeStream.forEach(System.out::println);}//外部迭代@Testpublic void test2(){ Iterator iterator = employees.iterator(); while (iterator.hasNext()){ System.out.println(iterator.next()); }} 筛选与切片的用法
filter---接收Lambda,从流中排除某些元素
limit---截断流,使其元素不超过给定的数量
skip(n)---跳过元素,返回一个扔掉了前n个元素的流。若流中元素不足n个,则返回一个空流,与limit(n)互补
distinct---筛选,通过流所生成元素的hashCode( )和equals( )去除重复元素
List
employees = Arrays.asList( new Employee("张三", 18 ,9999.99), new Employee("李四", 38, 5555.99), new Employee("王五", 50, 6666.66), new Employee("赵六", 16, 3333.33), new Employee("田七", 8, 7777.77), new Employee("田七", 8, 7777.77), new Employee("田七", 8, 7777.77));@Testpublic void test3(){ employees.stream() .filter((e) -> { System.out.println("短路"); return e.getSalary() > 5000; }) .limit(2) .forEach(System.out::println);}@Testpublic void test4(){ employees.stream() .filter((e) -> e.getSalary() > 5000) .skip(2) .forEach(System.out::println);}@Testpublic void test5(){ employees.stream() .filter((e) -> e.getSalary() > 5000) .skip(2) .distinct() .forEach(System.out::println);} 映射的用法
map---接收Lambda,将元素转换成其他形式或提取信息。接收一个函数作为参数,该参数会被应用到每个元素上,并将其映射成一个新的元素。
flatMap---接收一个函数作为参数,将流中的每个值换成另一个流,然后把所有流连接成一个流
public static Stream
filterCharacter(String str){ List list = new ArrayList<>(); for (Character ch : str.toCharArray()){ list.add(ch); } return list.stream();}@Testpublic void test6(){ List list = Arrays.asList("aaa", "bbb", "ccc", "ddd", "eee"); list.stream() .map((str) -> str.toUpperCase()) .forEach(System.out::println); System.out.println("----------------------------"); employees.stream() .map(Employee::getName) .forEach(System.out::println); System.out.println("-----------------------------"); Stream > stream = list.stream() .map(TestStreamAPI2::filterCharacter);//{{a, a, a}, {b, b, b}} stream.forEach((sm) -> { sm.forEach(System.out::println); }); System.out.println("--------------------------------"); Stream sm = list.stream() .flatMap(TestStreamAPI2::filterCharacter);//{a, a, a, b, b, b} sm.forEach(System.out::println);}
关于"Java8中Stream的筛选,切片与映射怎么用"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。
元素
迭代
参数
田七
篇文章
内容
函数
方法
更多
静态
生成
不错
实用
一次性
三个
信息
可以通过
形式
惰性
数组
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
北大青鸟ktv项目数据库
服务器共享盘如何格式化
学哪个软件开发技术入门快
软件开发项目答辩一般
网络安全宣传周签名活动意义
租用服务器数据安全
软件开发服务协议免费
sql数据库恢复正在使用
优质服务器
以太网服务器维护工程师
通信网络技术服务主要功能
验证码 服务器怎么验证
怎么画网络安全的画
打电话中断无法连接到服务器
诗计划表软件开发
服务器管理器角色异常
软件开发试用期1500
数据库端口时好时坏
办公软件开发策划
青少年网络安全教育ppt
黑龙江数据库空投箱工程
服务器返回错误含义
网络安全产业园官网北京
访问数据库卡
手机3g模型软件开发
招聘数据库系统管理员
小学网络安全进校园主题班会
数据库的中心是什么
攻城狮网络安全吗
世界顶级网络安全公司排行榜