尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

Stream流笔记

Stream流笔记 Java Stream流 完整笔记一、Stream流作用结合Lambda表达式简化集合、数组的数据遍历与处理代码。二、Stream流三大使用步骤获取Stream流对象创建流水线调用中间方法处理数据可链式调用返回新Stream调用终结方法执行操作关闭流流只能使用一次⚠️重要特点① 中间方法返回新流原始Stream流只能使用一次推荐链式编程② 对流中数据修改不会影响原集合/数组里的数据。三、获取Stream流的4种方式数据源获取方法说明单列集合CollectionList、Set集合对象.stream()Collection接口默认方法双列集合Map不能直接获取流需要先获取keySet()/entrySet()转成单列集合再获取流数组Arrays.stream(数组)Arrays工具类静态方法零散多个数据Stream.of(数据1,数据2...)Stream接口静态方法可变参数示例速记// 单列集合ListStringlistnewArrayList();StreamStrings1list.stream();// 数组int[]arr{1,2,3};IntStreams2Arrays.stream(arr);// 零散数据StreamIntegers3Stream.of(10,20,30);// Map双列集合 迂回方式MapString,IntegermapnewHashMap();StreamStringkeyStreammap.keySet().stream();StreamMap.EntryString,IntegerentryStreammap.entrySet().stream();四、中间方法返回新Stream可以链式调用只是定义操作规则不会真正执行直到调用终结方法才执行| 方法 | 作用 || ---- | ---- ||filter(Predicate)| 过滤元素保留满足条件的数据 ||limit(long maxSize)| 获取流中前maxSize个元素 ||skip(long n)| 跳过前n个元素剩余元素形成新流 ||distinct()| 元素去重自定义对象依赖hashCode()equals()||map(Function)| 转换流中元素的数据类型 ||Stream.concat(流a,流b)|静态方法合并两个流为一个新流 |五、终结方法执行所有操作调用后流关闭无法继续使用方法作用forEach(Consumer)遍历流内每一个元素count()返回long类型统计流中元素个数toArray()将流数据收集存入数组collect(Collectors)将流数据收集存入集合List/Set/Map常用收集写法// 收集到ListListStringliststream.collect(Collectors.toList());// 收集到Set自动去重SetStringsetstream.collect(Collectors.toSet());六、基础代码模板链式标准写法集合/数组.stream().中间方法1().中间方法2().终结方法();示例ListStringnamesArrays.asList(张三,李四,张五,王六);// 筛选姓张的名字遍历打印names.stream().filter(name-name.startsWith(张)).forEach(System.out::println);七、高频易错点总结Stream流只能消费一次调用终结方法之后流就关闭不能继续调用方法distinct()对自定义对象去重必须重写equals和hashCode中间方法是惰性求值没有终结方法中间的过滤、转换代码不会运行Map不能直接生成流必须先转成keySet、values、entrySetStream操作不会改变原始集合/数组的数据。
返回列表