中国网站为什么要备案,泰安网站建设入门推荐,二级网站建设检查评比方案,甘肃省两学一做专题网站在Java中#xff0c;Stream 是 Java 8 引入的一个强大API#xff0c;用于处理集合#xff08;如 List、Set、Map 等#xff09;数据的流式操作。它提供了一种声明式、函数式的编程风格#xff0c;可以高效地进行过滤、映射、排序、聚合等操作。 Stream 的核心概念
流Stream 是 Java 8 引入的一个强大API用于处理集合如 List、Set、Map 等数据的流式操作。它提供了一种声明式、函数式的编程风格可以高效地进行过滤、映射、排序、聚合等操作。 Stream 的核心概念
流Stream 流是一个来自数据源如集合、数组、I/O 资源的元素序列。流本身不存储数据而是按需计算。流操作分为中间操作Intermediate Operations和终端操作Terminal Operations。 中间操作Intermediate Operations 中间操作会返回一个新的流可以链式调用。常见的中间操作filter()、map()、sorted()、distinct()、limit() 等。中间操作是惰性的只有在终端操作触发时才会执行。 终端操作Terminal Operations 终端操作会触发流的执行并产生一个结果或副作用。常见的终端操作forEach()、collect()、reduce()、count()、anyMatch() 等。终端操作执行后流会被消耗无法再次使用。 Stream 的特点
声明式编程 通过方法链描述操作代码更简洁易读。例如list.stream().filter(...).map(...).collect(...)。 惰性求值 中间操作不会立即执行只有在终端操作触发时才会计算。 并行处理 可以通过 parallelStream() 轻松实现并行处理充分利用多核CPU。 不可复用 流一旦被终端操作消费就不能再次使用。 Stream 的常见操作
1. 创建流
ListString list Arrays.asList(a, b, c);
StreamString stream list.stream(); // 从集合创建流
StreamString parallelStream list.parallelStream(); // 创建并行流
StreamInteger numbers Stream.of(1, 2, 3); // 直接创建流2. 中间操作 过滤filter() ListString result list.stream().filter(s - s.startsWith(a)) // 过滤以 a 开头的元素.collect(Collectors.toList());映射map() ListInteger lengths list.stream().map(String::length) // 将字符串映射为长度.collect(Collectors.toList());去重distinct() ListString unique list.stream().distinct() // 去重.collect(Collectors.toList());排序sorted() ListString sorted list.stream().sorted() // 自然排序.collect(Collectors.toList());限制limit() ListString firstTwo list.stream().limit(2) // 只取前两个元素.collect(Collectors.toList());3. 终端操作 遍历forEach() list.stream().forEach(System.out::println); // 打印每个元素收集collect() ListString result list.stream().filter(s - s.length() 1).collect(Collectors.toList()); // 收集为List聚合reduce() OptionalString combined list.stream().reduce((s1, s2) - s1 - s2); // 拼接字符串匹配anyMatch()、allMatch()、noneMatch() boolean hasA list.stream().anyMatch(s - s.contains(a)); // 是否有包含 a 的元素计数count() long count list.stream().filter(s - s.length() 1).count(); // 统计符合条件的元素数量并行流
通过 parallelStream() 可以轻松实现并行处理
ListString result list.parallelStream().filter(s - s.length() 1).collect(Collectors.toList());Stream 的优势
代码简洁通过链式调用代码更易读。高效处理支持并行处理适合大数据量操作。函数式编程支持 Lambda 表达式和方法引用更符合现代编程风格。 总结
Stream 是 Java 8 引入的一个强大工具用于以声明式的方式处理集合数据。它通过中间操作和终端操作的组合提供了高效、简洁的数据处理能力特别适合需要对集合进行复杂操作的场景。