java流式计算Stream

简介: java流式计算Stream

java流式计算Stream

流(Stream)到底是什么呢? 是数据渠道,用于操作数据源(集合、数组等)所生成的元素序列。

“集合讲的是数据,流讲的是计算! ”

特点:

  1. Stream自己不会存储元素。
  2. Stream不会改变源对象。相反,他们会返回一个持有结果的新Stream。
  3. Stream操作是延迟执行的。这意味着他们会等到需要结果的时候才执行。

下面的代码中,需求是要把list集合中的元素全部变成乘以2,就需要使用map的stream流式计算方法,map接受的是一个JDK提供的,Function接口,所以lambda实现方法时需要一个返回值,一个参数。

map----映射(将元素映射成另外的元素)

collect----stream转list

Stream流就相当于java对集合操作的sql语句,可以进行各种类似sql查询筛选的操作。

  • 题目:请按照给出数据,找出同时满足以下条件的用户,也即以下条件全部满足
  • 偶数工D且年龄大于24且用户名转为大写且用户名字母倒排序
  • 只输出一个用户名字

运行结果:

代码:

import java.util.Arrays;
import java.util.List;
/**
 * 题目:请按照给出数据,找出同时满足以下条件的用户,也即以下条件全部满足
 * 偶数工D且年龄大于24且用户名转为大写且用户名字母倒排序
 * 只输出一个用户名字
 */
public class StreamDemo {
    public static void main(String[] args) {
        User u1 = new User(11, "a", 23);
        User u2 = new User(12, "b", 24);
        User u3 = new User(13, "c", 22);
        User u4 = new User(14, "d", 28);
        User u5 = new User(16, "e", 26);
        List<User> list = Arrays.asList(u1,u2,u3,u4,u5);
        list.stream().filter((u)->{return u.getId()%2==0;})//过滤
                .filter(user -> {return user.getAge()>24;})//过滤
                .map((u)->{return u.getUsername().toUpperCase();})//映射
                .sorted(((o1, o2) -> {return o2.compareTo(o1);}))//排序
                .limit(1)                                   //limit
                .forEach(System.out::println);
    }
}
class User{
    private Integer id;
    private String username;
    private Integer age;
    public User(Integer id, String username, Integer age) {
        this.id = id;
        this.username = username;
        this.age = age;
    }
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public String getUsername() {
        return username;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    public Integer getAge() {
        return age;
    }
    public void setAge(Integer age) {
        this.age = age;
    }
    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", username='" + username + '\'' +
                ", age=" + age +
                '}';
    }
}


相关文章
|
2月前
|
Java API 数据处理
Java新特性:使用Stream API重构你的数据处理
Java新特性:使用Stream API重构你的数据处理
|
3月前
|
机器学习/深度学习 Java 编译器
解锁硬件潜能:Java向量化计算,性能飙升W倍!
编译优化中的机器相关优化主要包括指令选择、寄存器分配、窥孔优化等,发生在编译后端,需考虑目标平台的指令集、寄存器、SIMD支持等硬件特性。向量化计算利用SIMD技术,实现数据级并行,大幅提升性能,尤其适用于图像处理、机器学习等领域。Java通过自动向量化和显式向量API(JDK 22标准)支持该技术。
159 4
|
2月前
|
Java 大数据 API
Java Stream API:现代集合处理与函数式编程
Java Stream API:现代集合处理与函数式编程
229 100
|
2月前
|
Java API 数据处理
Java Stream API:现代集合处理新方式
Java Stream API:现代集合处理新方式
261 101
|
2月前
|
并行计算 Java 大数据
Java Stream API:现代数据处理之道
Java Stream API:现代数据处理之道
235 101
|
3月前
|
存储 Java API
Java Stream API:现代数据处理之道
Java Stream API:现代数据处理之道
361 188
|
3月前
|
存储 Java API
Java Stream API:现代数据处理之道
Java Stream API:现代数据处理之道
265 92
|
1月前
|
Java Unix Go
【Java】(8)Stream流、文件File相关操作,IO的含义与运用
Java 为 I/O 提供了强大的而灵活的支持,使其更广泛地应用到文件传输和网络编程中。!但本节讲述最基本的和流与 I/O 相关的功能。我们将通过一个个例子来学习这些功能。
151 1
|
4月前
|
Oracle Java 关系型数据库
掌握Java Stream API:高效集合处理的利器
掌握Java Stream API:高效集合处理的利器
381 80
|
4月前
|
安全 Java API
Java 8 Stream API:高效集合处理的利器
Java 8 Stream API:高效集合处理的利器
281 83