Java8新特性-Stream
一、Stream(流)
1.1 简介
1.是数据渠道,用于操作数据源(集合、数组等)所生成的元素序列。
2.集合讲的是数据,流讲的是计算。
3.延迟方法:调用Stream方法之后 返回的还是Stream对象 可以继续调用其方法(多次)
4.终结方法: 调用Stream方法之后 返回的不是Stream对象 不能继续使用其方法(一次)
注:Stream自己不会存储元素,不会改变源对象,是延迟执行的,会等到需要结果的时候才执行。
1.2 获取Stream流
方法名称 | 方法描述 |
---|---|
static Stream of(T... values) | 将元素转换为Stream |
default Stream stream() | 将集合转换为Stream |
package com.xxx; import java.util.*; import java.util.stream.Stream; public class Test01 { public static void main(String[] args) { //将元素转换成Stream Stream stream = Stream.of(1, "a", 3.14, true, "b"); List<String> list = new ArrayList<>(); list.add("ha"); list.add("wu"); list.add("英"); list.add("gua"); //将集合转Stream Stream<String> stream1 = list.stream(); HashMap<String, String> ssh = new HashMap<>(); ssh.put("名1","值1"); ssh.put("名2","值2"); ssh.put("名3","值3"); //获取键,转成Stream Set<String> set = ssh.keySet(); Stream<String> stream2 = set.stream(); //获取值,也转成Stream Collection<String> values = ssh.values(); System.out.println(values.stream()); } }
1.3 常用方法
方法名称 | 方法描述 | 是否是延迟方法 |
---|---|---|
Stream fifilter(Predicate<? super T> predicate) | 用于数据进行过滤 | 是 |
void forEach(Consumer<? super T> action) | 对数据进行遍历 | 不是 |
long count() | 返回此流中元素的计数 | 不是 |
Stream limit(long maxSize) | 返回一个包含该流的元素流,截断长度不超过 maxSize | 是 |
Stream skip(long n) | 跳过指定元素 | 是 |
static Stream of(T... values) | 将元素转换为Stream | 是 |
Stream map(Function<? super T,? extends R> mapper) | 用于进行转换 | |
static Stream concat(Stream<? extends T> a, Stream<? extends T> b) | 用于合并两个Stream流资源 | 是 |
package com.xxx; import java.util.ArrayList; import java.util.List; import java.util.stream.Stream; public class Test03 { public static void main(String[] args) { String[] arrays01 = {"宫本武藏", "宋公明", "苏有朋", "石头人", "时传祥", "李耳", "庄子", "洪七公"}; String[] arrays02 = {"帕瓦罗蒂", "宋公明", "赵薇薇", "张自忠", "孛儿只斤铁木真", "张天爱", "张翠花"}; List<Person> list = new ArrayList<>(); Stream.concat(Stream.of(arrays01).filter(n->n.length() ==3).limit(3), Stream.of(arrays02).filter(n->n.substring(0,1).equals("张")).skip(2)) .map(Person::new).forEach(list::add); System.out.println(list); } }
本文作者:Ritchie里其
本文链接:https://www.cnblogs.com/wang-zeyu/p/16830052.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步