当前位置: 首页 > news >正文

JDK8新特性:Stream

JDK8最大的改变:

1. lambda表达式

2. Stream

1. Steam流的入门

什么是Stream?
也叫Stream流,是jdk8开始的一套API,用于操作集合或者数组中的数据

优点:

Stream流大量结合了Lambda的语法风格来创建,提供了一种更加强大、更加简单的操作集合或者数组中的数据,代码更简洁,可读性更好

package org.example;import java.util.*;
import java.util.function.BiConsumer;
import java.util.stream.Collectors;public class Main {public static void main(String[] args) {List<String> names = new ArrayList<>();Collections.addAll(names, "张三丰", "张无忌", "王五", "李四", "张三");System.out.println(names);System.out.println("--------------------------------");// 需求: 将姓张的, 并且名字是3个字的人名放到一个新集合/*1. 集合和数组的API方法*/List<String> list = new ArrayList<>();for (String name: names) {if (name.length() == 3 && name.startsWith("张")) {list.add(name);}}System.out.println(list);System.out.println("--------------------------------");/*2. 使用Steam流*/List<String> list2 = names.stream().filter(s->s.startsWith("张")).filter(a->a.length() == 3).collect(Collectors.toList());System.out.println(list2);}
}

掌握Stream流就是掌握Stream流的创建、中间方法、终结方法

2. Stream流的创建

package org.example;import java.util.*;
import java.util.function.BiConsumer;
import java.util.stream.Collectors;
import java.util.stream.IntStream;
import java.util.stream.Stream;public class Main {public static void main(String[] args) {/*1. List 获取 stream流*/List<String> names = new ArrayList<>();Collections.addAll(names, "张三丰", "张无忌", "王五", "李四", "张三");Stream<String> stream = names.stream();stream.filter(s->s.contains("三")).forEach(System.out::println);System.out.println("--------------------------------");/*2. Set 获取stream流*/Set<String> set = new HashSet<>();set.addAll(names);System.out.println(set);System.out.println("--------------------------------");Stream<String> stream1 = set.stream();stream1.filter(s->s.contains("三")).forEach(System.out::println);System.out.println("--------------------------------");/*3. Map 获取stream流*/Map<String, Integer> map = new HashMap<>();map.put("张三丰", 1);map.put("张无忌", 2);map.put("王五", 3);map.put("李四", 4);map.put("张三", 5);Set<String> keys = map.keySet();Stream<String> stream2 = keys.stream();Collection<Integer> values = map.values();Stream<Integer> stream3 = values.stream();Set<Map.Entry<String, Integer>> entries = map.entrySet();Stream<Map.Entry<String, Integer>> kvs = entries.stream();kvs.filter(e -> e.getKey().contains("三")).forEach(e -> {System.out.println(e.getKey() + ' ' + e.getValue());});/*4. 获取数组的stream流*/String[] arr = {"1", "2", "3"};Stream<String> stream4 = Arrays.stream(arr);Stream<String> stream5 = Stream.of(arr);}
}

3. Stream流的中间方法

4. Stream流的终结方法

收集Stream流(只能收集一次):

package org.example;import java.util.*;import java.util.stream.Collectors;
import java.util.stream.Stream;public class Main {public static void main(String[] args) {Map<String, Integer> map = new HashMap<>();map.put("张三丰", 1);map.put("张无忌", 2);map.put("王五", 3);map.put("李四", 4);map.put("张三", 5);Set<Map.Entry<String, Integer>> entries = map.entrySet();Stream<Map.Entry<String, Integer>> kvs = entries.stream();Stream<Map.Entry<String, Integer>> kvs1 = entries.stream();Map<String, Integer> map1 =  kvs.collect(Collectors.toMap(e -> e.getKey() + "t", e -> e.getValue() * 10));System.out.println(map1);/*{王五t=30, 张三丰t=10, 张三t=50, 李四t=40, 张无忌t=20}*///        Object[] arr = kvs1.toArray();Map.Entry<String, Integer>[] arr = kvs1.toArray(len -> new Map.Entry[len]);System.out.println(Arrays.toString(arr));/*[李四=4, 张三=5, 王五=3, 张三丰=1, 张无忌=2]*/}
}

最后:

http://www.lryc.cn/news/502724.html

相关文章:

  • 前端传入Grule,后端保存到 .grl 文件中
  • 探索《Crypto Rumble》 游戏:经济模型篇
  • 【CSS in Depth 2 精译_072】第 12 章 CSS 排版与间距概述 + 12.1 间距设置(上):究竟该用 em 还是 px
  • Elasticsearch对象映射
  • Oracle 19c rac 补丁升级,从19.7 to19.22-集群
  • 机器学习--Kaggle的使用
  • 客户服务新突破,天润融通助力电动车企业实现数智化转型
  • 力扣题目 - 2931.购买物品的最大开销
  • 智慧化工园区自动化在线监测,建立产业链路数字安全网
  • 在Docker中运行MySQL的思考:挑战与解决方案
  • Linux中所有和$有关的操作
  • github操作学习笔记(杂乱版)
  • 学习思考:一日三问(思考篇)之路由表
  • 多个NVR同时管理EasyNVR:设置了“按需拉流超时”配置但没反应的解决方法
  • 基于Springboot的实验室管理系统【附源码】
  • 【Oracle11g SQL详解】常用字符串函数:`CONCAT`、`SUBSTR`、`LENGTH`、`INSTR` 等
  • 某养老产业公司管理诊断项目成功案例纪实
  • 自然语言处理基础及应用场景
  • 网页爬虫技术全解析:从基础到实战
  • 数据仓库-查看表和数据库的信息
  • 【JVM】JVM基础教程(四)
  • 深入了解Text2SQL开源项目(Chat2DB、SQL Chat 、Wren AI 、Vanna)
  • websocket 服务 pinia 全局配置
  • 基于Springboot企业oa管理系统【附源码】
  • Python遥感开发之地理探测器的实现
  • 【HarmonyOS】 鸿蒙保存图片或视频到相册
  • Apache Echarts和POI
  • 厦门凯酷全科技有限公司正规吗靠谱吗?
  • WireShark 下载、安装和使用
  • 2025周易算命网站搭建详细方法+源码选择php环境的配置