一文带你入门Java Stream流,太强了
入门版:《Head First Java》、《Java 核心技术卷》 进阶版:《Java 编程思想》、《Effective Java》 大牛版:《Java 并发编程》、《深入理解 Java 虚拟机》
发布日期:2021-04-30 21:10:35
浏览次数:139
分类:精选文章
本文共 2900 字,大约阅读时间需要 9 分钟。
Java Stream:高效处理数据的秘密武器
01 创建流
在 Java 8 中,创建 Stream 可以从数组、集合或直接使用 Stream.of() 方法。以下是创建流的几种常见方式:
// 从数组创建流String[] arr = { "武汉加油", "中国加油", "世界加油" };Stream stream = Arrays.stream(arr);// 或者直接使用 Stream.of()Stream stream = Stream.of("武汉加油", "中国加油", "世界加油");// 从集合创建流List list = new ArrayList<>();list.add("武汉加油");list.add("中国加油");list.add("世界加油");Stream stream = list.stream(); 需要注意的是,Stream.of() 内部实际上调用了 Arrays.stream() 方法。
如果需要并行处理,可以使用 parallelStream() 方法:
ListaList = new ArrayList<>();Stream parallelStream = aList.parallelStream();
02 操作流
Stream 提供了丰富的操作方法,主要分为中间操作和终端操作。中间操作返回新的 Stream,终端操作执行实际操作并返回结果。常用的中间操作包括过滤、映射等,终端操作则包括计数、归并等。
1. 过滤
使用 filter() 方法可以从流中筛选出符合条件的元素。
Listlist = new ArrayList<>();list.add("周杰伦");list.add("王力宏");list.add("陶喆");list.add("林俊杰");Stream stream = list.stream() .filter(element -> element.contains("王"));stream.forEach(System.out::println);
2. 映射
使用 map() 方法可以将流中的元素转换为另一种类型。
Listlist = new ArrayList<>();list.add("周杰伦");list.add("王力宏");list.add("陶喆");list.add("林俊杰");Stream stream = list.stream() .map(String::length);stream.forEach(System.out::println);
3. 匹配
Stream 提供了三个匹配方法:anyMatch()、allMatch() 和 noneMatch()。
Listlist = new ArrayList<>();list.add("周杰伦");list.add("王力宏");list.add("陶喆");list.add("林俊杰");boolean anyMatchFlag = list.stream().anyMatch(element -> element.contains("王"));boolean allMatchFlag = list.stream().allMatch(element -> element.length() > 1);boolean noneMatchFlag = list.stream().noneMatch(element -> element.endsWith("沉"));System.out.println(anyMatchFlag); // trueSystem.out.println(allMatchFlag); // trueSystem.out.println(noneMatchFlag); // true
4. 组合
使用 reduce() 方法可以将流中的元素组合起来。
Listlist = Arrays.asList(0, 1, 2, 3);Optional optional = list.stream() .reduce((a, b) -> a + b);Optional optional1 = list.stream() .reduce(Integer::sum);int reduce = list.stream() .reduce(6, (a, b) -> a + b);int reduce1 = list.stream() .reduce(6, Integer::sum);
03 转换流
使用 collect() 方法可以将流转换回集合或其他类型。
Listlist = new ArrayList<>();list.add("周杰伦");list.add("王力宏");list.add("陶喆");list.add("林俊杰");// 将流转换为数组String[] strArray = list.stream().toArray(String[]::new);// 将流映射为长度并收集到列表中List list1 = list.stream() .map(String::length) .collect(Collectors.toList());// 将流收集到新的 ArrayList 中List list2 = list.stream() .collect(Collectors.toCollection(ArrayList::new));// 将流收集到字符串中,元素之间用 ", " 分隔String str = list.stream() .collect(Collectors.joining(", ")) .toString();
推荐阅读
如果你对 Java 编程感兴趣,可以参考以下书籍:
通过这些书籍,你可以更好地掌握 Java 的核心知识和高级编程技巧。
发表评论
最新留言
路过按个爪印,很不错,赞一个!
[***.219.124.196]2026年06月08日 13时15分43秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
php-兔子问题,斐波那契数列
2023-02-28
php-约瑟夫问题
2023-02-28
php.ini中常见的配置信息选项
2023-02-28
php.ini配置中有10处设置不当,会使网站存在安全问题
2023-02-28
PHP7 新特性
2023-02-28
PHP7+MySQL5.7+Nginx1.9. on Ubuntu 14.0
2023-02-28
php7.1.6 + redis
2023-02-28
php7中使用php_memcache扩展
2023-02-28
PHP7中十个需要避免的坑
2023-02-28
php7和PHP5对比的新特性和性能优化
2023-02-28
PHP7安装pdo_mysql扩展
2023-02-28
PHP7实战开发简单CMS内容管理系统(7) 后台登录架构 用户登录校验
2023-02-28
php7,从phpExcel升级到PhpSpreadsheet
2023-02-28
PHP8中match新语句的操作方法
2023-02-28
PHP:第一章——PHP中常量和预定义常量
2023-02-28
PHP:第一章——PHP中的位运算
2023-02-28
phpcms
2023-02-28
phpcms 2008 product.php pagesize参数代码注射漏洞
2023-02-28
phpcms V9 自定义添加 全局变量{DIY_PATH}方法
2023-02-28