Java8中Stream的筛选,切片与映射怎么用
发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇文章将为大家详细讲解有关Java8中Stream的筛选,切片与映射怎么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。使用Stream的三个操作步骤创建Stre
千家信息网最后更新 2026年11月02日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安全错误
数据库的锁怎样保障安全
互联网高科技
互联网科技工作委员会毛军
科技金融是不是互联网金融
互联网电商科技
互联网科技的
猪兼强互联网科技
狮子座互联网科技有限公司
睿民互联网科技
时间互联网络科技
顺玮阁互联网科技
互联网时代科技改变生活
互联网大会黑科技排名
互联网科技创新服务
港股科技和互联网
搜狐科技互联网
消费医药和互联网科技
电子商务与互联网科技的关系
深圳无忧互联网科技
上海乐五互联网科技有限公司
互联网领先科技成果宣传视频
今日互联网科技
美国互联网科技巨头监管
美国互联网科技
小马过河互联网科技
郑州华宇互联网科技
无锡溥仪互联网科技有限公司
迪庆互联网科技招生
威龙国际互联网科技公司
科技互联网的核心竞争力
科技互联网公司两年变化