Java8中Stream的筛选,切片与映射怎么用
发表于:2025-02-23 作者:千家信息网编辑
千家信息网最后更新 2025年02月23日,这篇文章将为大家详细讲解有关Java8中Stream的筛选,切片与映射怎么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。使用Stream的三个操作步骤创建Stre
千家信息网最后更新 2025年02月23日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安全错误
数据库的锁怎样保障安全
江苏服务器安全云空间
永城市网络安全大队
go语言服务器 行情
网络安全演习内容
网络不行连接不到服务器什么情况
软件开发工作岗总结3000
sql 数据库 损坏
网络安全 工作委员会
工程软件开发技术北京理工大学
t2000网管数据库安装
计算机网络技术将来是干嘛的
助享互联网科技
卫生局统计信息网络安全等级
dapp 后台有服务器吗
定南软件开发项目管理
数据库的关系图怎么做
济南服务器运维管理系统批发
苹果平板电脑定位服务器
sqldbx怎么批量导入数据库
秦皇岛海帝软件开发有限公司
网络安全承办城市2020
网络技术总监主要职责
增加服务器和桌面云一起管理
中国电信网络技术工程师专业试题
电源对服务器有干扰吗
宿州视频点播软件开发
X3500服务器电源开关
安卓 vpn服务器地址
网络安全教育课堂讲座
游设备软件开发