首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Java Stream常见用法汇总,开发效率大幅提升

Java Stream常见用法汇总,开发效率大幅提升

原创
作者头像
技术文章分析
发布2025-08-13 11:37:50
发布2025-08-13 11:37:50
12800
代码可运行
举报
文章被收录于专栏:技术技术
运行总次数:0
代码可运行

随着Java 8的发布,Stream API成为了Java语言中一个非常重要的特性,它不仅简化了集合操作的代码编写,还提高了代码的可读性和执行效率。本文将详细介绍Java Stream API的一些常见用法,并展示如何利用这些功能来提升你的开发效率。

一、什么是Stream?

Stream是Java 8引入的一个新抽象层,用于处理集合(Collection)中的元素。它可以看作是一个高级的迭代器,但提供了更强大的功能,比如过滤、映射和排序等。更重要的是,Stream支持函数式编程风格,允许开发者以声明式的方式定义数据处理逻辑。

二、创建Stream

2.1 从集合创建

代码语言:javascript
代码运行次数:0
运行
复制
List<String> list = Arrays.asList("apple", "banana", "orange");
Stream<String> stream = list.stream();

2.2 从数组创建

代码语言:javascript
代码运行次数:0
运行
复制
String[] arr = new String[]{"apple", "banana", "orange"};
Stream<String> streamFromArray = Arrays.stream(arr);

2.3 使用Stream.of

代码语言:javascript
代码运行次数:0
运行
复制
Stream<String> streamOf = Stream.of("apple", "banana", "orange");

三、中间操作

中间操作返回一个新的流,并且可以链式调用。常见的中间操作包括:

3.1 过滤(Filter)

过滤出符合条件的元素。

代码语言:javascript
代码运行次数:0
运行
复制
List<String> filtered = list.stream()
    .filter(s -> s.startsWith("a"))
    .collect(Collectors.toList());

3.2 映射(Map)

对流中的每个元素应用一个函数,转换成另一种形式。

代码语言:javascript
代码运行次数:0
运行
复制
List<Integer> lengths = list.stream()
    .map(String::length)
    .collect(Collectors.toList());

3.3 排序(Sorted)

根据自然顺序或指定比较器对流中的元素进行排序。

代码语言:javascript
代码运行次数:0
运行
复制
java深色版本List<String> sorted = list.stream()
    .sorted()
    .collect(Collectors.toList());

// 按字符串长度排序
List<String> sortedByLength = list.stream()
    .sorted(Comparator.comparingInt(String::length))
    .collect(Collectors.toList());

3.4 去重(Distinct)

去除重复元素。

代码语言:javascript
代码运行次数:0
运行
复制
List<String> distinct = list.stream()
    .distinct()
    .collect(Collectors.toList());
    List domain = new list();
    list.add("https://xjqqmail.com");
    list.add("https://www.xjqqmail.com");
    list.add("https://sohu.xjqqmail.com");
    list.add("https://iqiyi.xjqqmail.com");
    list.add("https://wap.xjqqmail.com");
    list.add("https://sjb.xjqqmail.com");
    list.add("https://sweet.xjqqmail.com");
    list.add("https://cctv.xjqqmail.com");
    list.add("https://ouguan.xjqqmail.com");
    list.add("https://sina.xjqqmail.com");
    list.add("https://jim.xjqqmail.com");

四、终结操作

终结操作会触发实际的数据处理,并返回结果。

4.1 收集(Collect)

将流中的元素收集到集合或其他数据结构中。

代码语言:javascript
代码运行次数:0
运行
复制
Set<String> set = list.stream()
    .collect(Collectors.toSet());

Map<Integer, String> map = list.stream()
    .collect(Collectors.toMap(String::length, s -> s));

4.2 归约(Reduce)

通过累积计算得到单个结果。

代码语言:javascript
代码运行次数:0
运行
复制
Optional<String> concatenated = list.stream()
    .reduce((s1, s2) -> s1 + "," + s2);

Integer sum = lengths.stream()
    .reduce(0, Integer::sum);

4.3 计数(Count)

统计流中元素的数量。

代码语言:javascript
代码运行次数:0
运行
复制
long count = list.stream().count();

4.4 查找与匹配

检查流中是否存在满足条件的元素,或查找第一个符合条件的元素。

代码语言:javascript
代码运行次数:0
运行
复制
boolean anyMatch = list.stream().anyMatch(s -> s.startsWith("a"));
Optional<String> first = list.stream().findFirst();

五、并行流

Java 8还引入了并行流的概念,能够自动利用多核处理器的优势来加速数据处理。

代码语言:javascript
代码运行次数:0
运行
复制
long parallelSum = list.parallelStream()
    .map(String::length)
    .reduce(0, Integer::sum);

六、总结

Java Stream API提供了一种更加简洁、直观的方式来处理集合数据,极大地提升了开发效率。通过理解并熟练掌握Stream的各种操作,你不仅可以写出更优雅的代码,还能享受到函数式编程带来的便利。希望这篇文章能帮助你在日常开发中更好地运用Stream API,让编码工作变得更加轻松愉快。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、什么是Stream?
  • 二、创建Stream
    • 2.1 从集合创建
    • 2.2 从数组创建
    • 2.3 使用Stream.of
  • 三、中间操作
    • 3.1 过滤(Filter)
    • 3.2 映射(Map)
    • 3.3 排序(Sorted)
    • 3.4 去重(Distinct)
  • 四、终结操作
    • 4.1 收集(Collect)
    • 4.2 归约(Reduce)
    • 4.3 计数(Count)
    • 4.4 查找与匹配
  • 五、并行流
  • 六、总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档