Java中的流(Stream)以及它们在集合操作中的作用和例子

news/2024/9/24 6:59:36/

Java中的流(Stream)是Java 8引入的一个新特性,主要用于处理集合数据。流提供了一种声明式的方式来处理数据,使代码更加简洁和易于理解。通过使用流,你可以对集合数据进行各种复杂的操作,如过滤、映射、排序、聚合等,而无需编写大量的迭代代码。

流的主要作用包括:

简化集合操作:通过链式调用的方式,你可以将多个操作组合在一起,形成一个流畅的操作序列。
并行处理:流支持并行处理,可以充分利用多核CPU的性能优势,提高数据处理速度。
延迟执行:流的操作是懒加载的,只有在需要结果时才会执行操作,这有助于提高程序的性能。
下面是一个使用Java流进行集合操作的简单例子:

java
import java.util.Arrays;  
import java.util.List;  
import java.util.stream.Collectors;  
  
public class StreamExample {  
    public static void main(String[] args) {  
        // 创建一个整数列表  
        List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9);  
  
        // 使用流进行过滤操作,找出所有偶数  
        List<Integer> evenNumbers = numbers.stream()  
                .filter(n -> n % 2 == 0)  
                .collect(Collectors.toList());  
  
        System.out.println("Even numbers: " + evenNumbers);  
  
        // 使用流进行映射操作,将每个数字乘以2  
        List<Integer> doubledNumbers = numbers.stream()  
                .map(n -> n * 2)  
                .collect(Collectors.toList());  
  
        System.out.println("Doubled numbers: " + doubledNumbers);  
  
        // 使用流进行排序操作  
        List<Integer> sortedNumbers = numbers.stream()  
                .sorted()  
                .collect(Collectors.toList());  
  
        System.out.println("Sorted numbers: " + sortedNumbers);  
    }  
}
在上面的例子中,我们首先创建了一个包含整数的列表。然后,我们使用了流的filter方法来找出所有的偶数,map方法将每个数字乘以2,以及sorted方法进行排序。最后,我们使用collect方法将结果收集到一个新的列表中。

需要注意的是,流操作不会修改原始集合,而是返回一个新的集合或结果。这是因为流操作是懒加载的,而且流操作本身是无状态的。所以,每次对流进行操作时,都会返回一个新的结果。

 


http://www.ppmy.cn/news/1450844.html

相关文章

RocketMq详解:一、RocketMQ 介绍及基本概念

文章目录 前言1.RocketMQ简介2.RocketMQ 特点3.核心特性4.应用场景5.RocketMQ 优势6.RocketMQ 四大核心组件6.1 NameServer1.NameServer作用2.NameServer被设计为无状态的原因3.和NameServer和Zookeeper的区别4.NameServer的高可用保障 6.2 Broker1.Broker部署方式2.高可用与负…

[华为OD] C卷 服务器cpu交换 现有两组服务器QA和B,每组有多个算力不同的CPU 100

题目&#xff1a; 现有两组服务器QA和B,每组有多个算力不同的CPU,其中A[i]是A组第i个CPU的运算能 力&#xff0c;B[i]是B组第i个CPU的运算能力。一组服务器的总算力是各CPU的算力之和。 为了让两组服务器的算力相等&#xff0c;允许从每组各选出一个CPU进行一次交换。 求两…

蓝桥杯练习系统(算法训练)ALGO-950 逆序数奇偶

资源限制 内存限制&#xff1a;256.0MB C/C时间限制&#xff1a;1.0s Java时间限制&#xff1a;3.0s Python时间限制&#xff1a;5.0s 问题描述 老虎moreD是一个勤于思考的青年&#xff0c;线性代数行列式时&#xff0c;其定义中提到了逆序数这一概念。不过众所周知我们…

3D看车有哪些强大的功能?适合哪些企业使用?

3D看车是一种创新的汽车展示方式&#xff0c;它提供了许多强大的功能&#xff0c;特别适合汽车行业的企业使用。 3D看车可实现哪些功能&#xff1f; 1、细节展示&#xff1a; 51建模网提供全套汽车行业3D数字化解决方案&#xff0c;3D看车能够将汽车展示得更加栩栩如生&…

axios.get请求 重复键问题??

封装的接口方法&#xff1a; 数据&#xff1a; 多选框多选后 能得到对应的数组 但是请求的载荷却是这样的,导致会请求不到数据 departmentChecks 的格式看起来是一个数组&#xff0c;但是通常 HTTP 请求的查询参数不支持使用相同的键&#xff08;key&#xff09;名多次。如…

pytorch-解决过拟合之early stop和dropout

目录 1. Early Stop2. 怎样Early Stop3. Dropout4. pytorch实现Dropout5. train和test时的Dropout6. 增加了vidom的示例代码 1. Early Stop 所谓的over fitting是训练集准确率在上升&#xff0c;但是test准确率开始下降了。 在测试集准确率达到最高点开始下降的时候停止训练&a…

Qt Creator中变量与函数的注释 - 鼠标悬浮可显示

Qt Creator中变量与函数的注释 - 鼠标悬浮可显示 引言一、变量注释二、函数注释三、参考链接 引言 代码注释在软件开发中起着至关重要的作用。它们不仅有助于开发者理解和维护代码&#xff0c;还能促进团队协作&#xff0c;提高代码的可读性和可维护性。适当的注释应该是简洁明…

LeetCode135:分发糖果

题目描述 n 个孩子站成一排。给你一个整数数组 ratings 表示每个孩子的评分。 你需要按照以下要求&#xff0c;给这些孩子分发糖果&#xff1a; 每个孩子至少分配到 1 个糖果。 相邻两个孩子评分更高的孩子会获得更多的糖果。 请你给每个孩子分发糖果&#xff0c;计算并返回需…