Java8中Stream的筛选,切片与映射怎么用
发表于:2025-11-08 作者:千家信息网编辑
千家信息网最后更新 2025年11月08日,这篇文章将为大家详细讲解有关Java8中Stream的筛选,切片与映射怎么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。使用Stream的三个操作步骤创建Stre
千家信息网最后更新 2025年11月08日Java8中Stream的筛选,切片与映射怎么用
这篇文章将为大家详细讲解有关Java8中Stream的筛选,切片与映射怎么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
使用Stream的三个操作步骤
创建Stream
中间操作
终止操作(终端操作)
@Testpublic void test1(){ //创建Stream //1.可以通过Collection系列集合提供的stream()获取串行流或parallelStream()获取并行流 Listlist = 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(){ //中间操作:不会执行任何操作 StreamemployeeStream = 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安全错误
数据库的锁怎样保障安全
王者荣耀战队服务器怎么登录
网络安全设备idc排名
服务器专用系统碟图片
外国网络安全局局长
学生动漫网络安全宣传片
带数据库的软件无法登录
把网络安全教育进行到底
个人所得税连接税务局服务器失败
信息网络安全海报排版
网络安全保障工作情况汇报
网络安全周报名2020
自建邮件服务器域名解析设置
河北迅腾网络技术有限公司
A3战士装备数据库
中国联通的网络技术是哪里
如何查网络安全密钥匙
践行国家网络安全观
浙江单据外贸软件开发公司
留守儿童网络安全的征文
oracle数据库 角色
可以虚拟数据库的技术
杭州 嵌入式软件开发 工资
抖音数据库
网络安全读后感
李沧区软件开发视频
银行负责网络安全职务
在关系数据库中使用数据
软件开发本地数据库
太湖软件开发专业
怎么检测原神在哪个服务器有号