Java8 Stream 真香,赶紧来舔一舔

简介:

如今Java14已经发布许久了,Java15也在路上跑着了,然鹅不少小伙伴Java8API应该还没用溜吧!今天跟各位小伙伴们聊聊Java Stream API的具体使用方法以及应用场景。

举哥简单的例子,定义一个数组:

String[] users = new String[]{"张三","李四","王二"};

我们来使用之前的方式遍历:

for(int i=0;i<users.length;i++){
    System.out.println(users[i]);
}

亦或者使用:

for(String u:users){
   System.out.println(u);
}

使用最新的API实现方式:

Stream<String> stream = Stream.of(users);
stream.forEach(user-> System.out.println(user));

然鹅好像并没有多么方便,仅仅少撸了一行代码,下面跟大家分享一个稍微复杂一点的例子。

首先定义一个学生类:

@Data
@Builder
public class Student {
    private String name;
    private Integer age;
    private Integer sex;
    private Double score;
}

定义基础数据:

List<Student> list = new ArrayList<>();
list.add(new Student("张三",28,1,78.9));
list.add(new Student("李四",20,1,98.0));
list.add(new Student("王二",29,0,100.0));
list.add(new Student("张三",28,1,78.5));
Stream<Student> stream = list.stream();

遍历:

stream.forEach(stu-> System.out.println(stu.getName()));

过滤性别:

stream.filter(stu -> stu.getSex()==1)
                .forEach(stu -> System.out.println(stu.getName()));

名字去重:

stream.distinct().forEach(stu -> System.out.println(stu.getName()));

年龄排序:

stream.sorted(Comparator.comparingInt(Student::getAge))
                .forEach(stu -> System.out.println(stu.getName()));

排序反转:

stream.sorted(Comparator.comparingInt(Student::getAge).reversed())
                .forEach(stu -> System.out.println(stu.getName()));

姓名集合:

List<String> userList = stream.map(stu -> stu.getName())
                .collect(Collectors.toList());

分数求和:

Optional<Double> totalScore = stream.map(Student::getScore)
                .reduce((x, y) -> x+y);
System.out.println(totalScore.get());

求分数最大值:

Optional<Double> maxScore = stream.map(Student::getScore).reduce(Double::max);

求分数最小值:

Optional<Double> minScore = stream.map(Student::getScore).reduce(Double::min);

取前三名同学:

stream.sorted(Comparator.comparingDouble(Student::getScore).reversed())
                .limit(3)
                .forEach(System.out::println);

扔了前三名同学:

stream.sorted(Comparator.comparingDouble(Student::getScore).reversed())
                .skip(3)
                .forEach(System.out::println);

卧槽太多了,撸主举不过来了,但是基本上常用的就这么几个。函数式编程写出的代码更加简洁且意图明确,使用stream接口让你从此告别for循环,小伙伴们赶紧入坑享受吧!!!

作者: 小柒

出处: https://blog.52itstyle.vip

目录
相关文章
|
4月前
|
安全 Java API
告别繁琐编码,拥抱Java 8新特性:Stream API与Optional类助你高效编程,成就卓越开发者!
【8月更文挑战第29天】Java 8为开发者引入了多项新特性,其中Stream API和Optional类尤其值得关注。Stream API对集合操作进行了高级抽象,支持声明式的数据处理,避免了显式循环代码的编写;而Optional类则作为非空值的容器,有效减少了空指针异常的风险。通过几个实战示例,我们展示了如何利用Stream API进行过滤与转换操作,以及如何借助Optional类安全地处理可能为null的数据,从而使代码更加简洁和健壮。
129 0
|
21天前
|
存储 Java 数据挖掘
Java 8 新特性之 Stream API:函数式编程风格的数据处理范式
Java 8 引入的 Stream API 提供了一种新的数据处理方式,支持函数式编程风格,能够高效、简洁地处理集合数据,实现过滤、映射、聚合等操作。
37 6
|
22天前
|
Java API 开发者
Java中的Lambda表达式与Stream API的协同作用
在本文中,我们将探讨Java 8引入的Lambda表达式和Stream API如何改变我们处理集合和数组的方式。Lambda表达式提供了一种简洁的方法来表达代码块,而Stream API则允许我们对数据流进行高级操作,如过滤、映射和归约。通过结合使用这两种技术,我们可以以声明式的方式编写更简洁、更易于理解和维护的代码。本文将介绍Lambda表达式和Stream API的基本概念,并通过示例展示它们在实际项目中的应用。
|
12天前
|
Rust 安全 Java
Java Stream 使用指南
本文介绍了Java中Stream流的使用方法,包括如何创建Stream流、中间操作(如map、filter、sorted等)和终结操作(如collect、forEach等)。此外,还讲解了并行流的概念及其可能带来的线程安全问题,并给出了示例代码。
|
23天前
|
安全 Java API
Java中的Lambda表达式与Stream API的高效结合####
探索Java编程中Lambda表达式与Stream API如何携手并进,提升数据处理效率,实现代码简洁性与功能性的双重飞跃。 ####
25 0
|
1月前
|
Java API 数据处理
探索Java中的Lambda表达式与Stream API
【10月更文挑战第22天】 在Java编程中,Lambda表达式和Stream API是两个强大的功能,它们极大地简化了代码的编写和提高了开发效率。本文将深入探讨这两个概念的基本用法、优势以及在实际项目中的应用案例,帮助读者更好地理解和运用这些现代Java特性。
|
2月前
|
Java 流计算
Flink-03 Flink Java 3分钟上手 Stream 给 Flink-02 DataStreamSource Socket写一个测试的工具!
Flink-03 Flink Java 3分钟上手 Stream 给 Flink-02 DataStreamSource Socket写一个测试的工具!
45 1
Flink-03 Flink Java 3分钟上手 Stream 给 Flink-02 DataStreamSource Socket写一个测试的工具!
|
2月前
|
Java Shell 流计算
Flink-02 Flink Java 3分钟上手 Stream SingleOutputStreamOpe ExecutionEnvironment DataSet FlatMapFunction
Flink-02 Flink Java 3分钟上手 Stream SingleOutputStreamOpe ExecutionEnvironment DataSet FlatMapFunction
26 1
Flink-02 Flink Java 3分钟上手 Stream SingleOutputStreamOpe ExecutionEnvironment DataSet FlatMapFunction
|
2月前
|
Java 大数据 API
别死脑筋,赶紧学起来!Java之Steam() API 常用方法使用,让开发简单起来!
分享Java Stream API的常用方法,让开发更简单。涵盖filter、map、sorted等操作,提高代码效率与可读性。关注公众号,了解更多技术内容。
|
3月前
|
存储 Java API
Java——Stream流详解
Stream流是JDK 8引入的概念,用于高效处理集合或数组数据。其API支持声明式编程,操作分为中间操作和终端操作。中间操作包括过滤、映射、排序等,可链式调用;终端操作则完成数据处理,如遍历、收集等。Stream流简化了集合与数组的操作,提升了代码的简洁性
179 11
Java——Stream流详解