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

做presentation的网站金融社区类网站建设

做presentation的网站,金融社区类网站建设,国内公司网站模板,如何建立搜索功能的网站Java Stream 流详解 Stream 是 Java 8 引入的 API,用于高效处理集合数据(如 List、Set、Map 等)。它支持函数式编程风格,能实现复杂的查询、过滤、映射等操作,并支持并行处理以提升性能。核心特点 非存储数据结构&…

Java Stream 流详解

Stream 是 Java 8 引入的 API,用于高效处理集合数据(如 ListSetMap 等)。它支持函数式编程风格,能实现复杂的查询、过滤、映射等操作,并支持并行处理以提升性能。


核心特点
  1. 非存储数据结构:不存储数据,仅通过计算管道传递数据。
  2. 不修改源数据:所有操作生成新流,不影响原始集合。
  3. 惰性求值:中间操作延迟执行,直到遇到终止操作才触发计算。
  4. 可消费性:流只能被遍历一次,终止操作后流即失效。

操作分类
类型操作示例
创建流从集合/数组生成流list.stream(), Arrays.stream(array)
中间操作返回新流(延迟执行)filter(), map(), sorted(), distinct()
终止操作触发计算并返回结果(非流类型)collect(), forEach(), reduce(), count()

常用操作详解
1. 创建流
// 从集合创建
List<String> list = Arrays.asList("a", "b", "c");
Stream<String> stream1 = list.stream();// 从数组创建
String[] array = {"a", "b", "c"};
Stream<String> stream2 = Arrays.stream(array);// 直接创建
Stream<String> stream3 = Stream.of("a", "b", "c");// 生成无限流(需限制大小)
Stream<Integer> infiniteStream = Stream.iterate(0, n -> n + 1).limit(10); // 0,1,2,...,9
2. 中间操作(链式调用)
  • filter(Predicate<T>):过滤元素

    stream.filter(s -> s.startsWith("a")); // 保留以"a"开头的元素
    
  • map(Function<T,R>):元素转换

    stream.map(String::toUpperCase); // 转为大写 ["A","B","C"]
    
  • flatMap(Function<T,Stream<R>>):扁平化嵌套流

    List<List<String>> nestedList = Arrays.asList(Arrays.asList("a", "b"),Arrays.asList("c", "d")
    );
    nestedList.stream().flatMap(List::stream) // 合并为["a","b","c","d"].forEach(System.out::println);
    
  • distinct():去重

    Stream.of(1, 2, 2, 3).distinct(); // [1, 2, 3]
    
  • sorted():排序

    Stream.of(3, 1, 2).sorted(); // [1, 2, 3]
    
  • limit(long n):截取前 n 个元素

    Stream.iterate(0, i -> i + 1).limit(3); // [0, 1, 2]
    
3. 终止操作
  • collect(Collector):转换为集合

    List<String> list = stream.collect(Collectors.toList()); // 转List
    Set<String> set = stream.collect(Collectors.toSet());    // 转Set
    
  • forEach(Consumer<T>):遍历元素

    stream.forEach(System.out::println); // 打印每个元素
    
  • reduce():聚合计算

    Optional<Integer> sum = Stream.of(1, 2, 3).reduce((a, b) -> a + b); // 6
    
  • count():统计元素数量

    long count = stream.filter(s -> !s.isEmpty()).count();
    
  • 匹配检查

    boolean anyMatch = stream.anyMatch(s -> s.contains("a")); // 任一元素匹配
    boolean allMatch = stream.allMatch(s -> s.length() > 0);  // 所有元素匹配
    

并行流

通过多线程加速处理大数据集:

// 创建并行流
List<String> result = list.parallelStream().filter(s -> s.length() > 2).collect(Collectors.toList());

注意:并行流需确保操作是线程安全的(如避免修改共享状态)。


实战示例
// 示例:从用户列表中筛选年龄≥18的用户,按姓名排序,提取前10个
List<User> users = ...; // 数据源List<String> result = users.stream().filter(user -> user.getAge() >= 18)  // 过滤.sorted(Comparator.comparing(User::getName)) // 排序.limit(10)                           // 截取.map(User::getName)                  // 提取姓名.collect(Collectors.toList());       // 转为List

注意事项
  1. 流不可复用:终止操作后流即关闭,再次使用会抛出 IllegalStateException
  2. 避免副作用:操作中不要修改外部变量(使用无状态函数)。
  3. 性能考量:小数据集用顺序流,大数据集用并行流(需测试验证)。

Stream API 大幅简化了集合操作代码,结合 Lambda 表达式,使 Java 处理数据更简洁高效。

http://www.dtcms.com/a/557408.html

相关文章:

  • 绥中做网站青海西宁制作网站企业
  • 深入理解 Tailwind CSS 的宽高系统(Width Height)
  • ppt免费模板下载?【图文详解】12个ppt模板免费下载网站介绍?ppt模板制作?ppt模板下载?
  • 做网站的怎样找客户广告推广赚钱在哪接
  • 终端类型快速识别 + 核心命令对照速查表
  • 网站建设zrhskj做装饰画的行业网站
  • 算力与数据驱动的 AI 技术演进全景(1999-2024):模型范式、Infra 数据、语言模型与多模态的关键突破
  • 全是广告的网站站长工具特级a免费
  • 网站设计公司哪家好手机端的网站首页该怎么做
  • 数据结构之图的邻接矩阵
  • 【数据结构】双链表 二叉树 练习记录
  • 宁波怎么做网站排名优化深圳网络推广案例
  • STM32把产品信息写入固件.hex / .bin文件中详解(分散加载)
  • 考研408--计算机网络--day2--性能指标分层结构OSITCP/IP
  • 刘洋洋全新单曲《小小的我》温情上线,诠释“渺小”的力量
  • Photoshop - Photoshop 工具栏(19)颜色替换工具
  • 进程等待(解决僵尸进程)
  • 划时代的协作:GitHub Agent HQ 如何开启AI原生开发新纪元
  • Jmeter基础知识详解
  • 设计素材网站合集手机电子商务网站建设
  • 2025年江西省职业院校技能大赛高职组“区块链技术应用”任务书(3卷)
  • Day75 RS-485 通信协议设计、串口编程与嵌入式系统部署实践
  • 中文编码、乱码问题解析处理
  • 如何设计一款百兆网络监控器H81220S
  • 2025年ASOC SCI2区TOP,双重防御网络阻断模型下的供给路线优化,深度解析+性能实测
  • seo关键词教程国外seo综合查询
  • 郑州网站建设饣汉狮网络wordpress重置主题
  • 算法——二叉树、dfs、bfs、适配器、队列练习
  • Linux_Socket_浅谈UDP
  • dfs|位运算