Java基础笔记:流的中间方法实践

需积分: 1 0 下载量 100 浏览量 更新于2024-08-03 收藏 18KB MD 举报
"本篇Java基础笔记主要介绍了Java 9中Stream API的新特性和几个核心中间方法。Stream API是Java 8引入的一种处理集合数据的强大工具,它允许我们以声明式的方式处理大量数据,而不是传统的迭代或循环。以下是一些关键知识点的详细说明: 1. **过滤器方法** (`filter(Predicate predicate)`): 这个方法用于从Stream中筛选出符合给定条件(由Predicate函数定义)的元素。Predicate接口接受一个对象作为参数并返回一个布尔值,表示该对象是否满足条件。例如,在上述代码中,`stream.filter(t -> t.length() > 2)`会过滤出长度大于2的字符串。 2. **映射方法** (`mapToXxx(ToXxxFunction mapper)`): 这个方法用于将Stream中的每个元素应用ToXxxFunction提供的转换规则,创建一个新的流。例如,`.map(StringBuffer::new)`将每个字符串转换为StringBuffer对象,保留流中的每个元素及其对应的转换结果。 3. **副作用方法** (`peek(Consumer action)`): 通过这个方法,可以对Stream中的每个元素执行一个操作,但不会改变原始流。这通常用于日志记录或者调试,如代码中的`peek`用于在转换每个元素后打印其原始值。 4. **去重方法** (`distinct()`): 这个有状态的方法用于去除Stream中重复的元素,这里的重复判断是基于equals()方法。它返回一个去重后的流,不改变原流。 5. **排序方法** (`sorted()`): 保证流中的元素按照指定的顺序排列,如升序或降序。同样,这是一个有状态的方法,会对流进行排序操作。 6. **限制元素数量** (`limit(long maxSize)`): 这个有状态且短路的方法限制了对流的访问,确保后续操作仅处理指定的最大元素数量。如果流的大小小于最大值,实际操作的元素数量将与流的大小相同。 在练习示例中,首先将列表转换为Stream,然后通过这些中间方法逐步处理数据,最终得到一个满足特定条件的、去重、排序并可能包含特定操作(如打印)的流。这种操作方式有助于提高代码的可读性和性能,特别是当处理大数据集时。熟练掌握这些方法对于编写高效且优雅的Java代码至关重要。"