千家信息网

java8中的Stream常用方法有哪些

发表于:2025-11-09 作者:千家信息网编辑
千家信息网最后更新 2025年11月09日,这篇文章主要介绍了java8中的Stream常用方法有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。Stream 常用方法创建St
千家信息网最后更新 2025年11月09日java8中的Stream常用方法有哪些

这篇文章主要介绍了java8中的Stream常用方法有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

Stream 常用方法
创建Stream
  1. 将现有数据结构转化成Stream

Stream s = Stream.of(1, 2, 3, 4, 5);Stream s = Arrays.stream(arr);Stream s = aList.stream();
  1. 通过Stream.generate()方法:

// 这种方法通常表示无限序列Stream s = Stream.generate(SuppLier s);// 创建全体自然数的Streamclass NatualSupplier implements Supplier {    BigInteger next = BigInteger.ZERO;    @Override    public BigInteger get() {        next = next.add(BigInteger.ONE);        return next;    }}
  1. 通过其他方法返回

Stream lines = Files.lines(Path.get(filename))...
map方法

把一种操作运算映射到Stream的每一个元素上,从而完成一个Stream到另一个Stream的转换
map方法接受的对象是Function接口,这个接口是一个函数式接口:

 Stream map(Function mapper);@FunctionalInterfacepublic interface Function {    // 将T转换为R    R apply(T t);}

使用:

// 获取Stream里每个数的平方的集合Stream ns = Stream.of(1, 2, 3, 4, 5);ns.map(n -> n * n).forEach(System.out::println);
flatMap

map方法是一个一对一的映射,每输入一个数据也只会输出一个值。

flatMap方法是一对多的映射,对每一个元素映射出来的仍旧是一个Stream,然后会将这个子Stream的元素映射到父集合中:

Stream> inputStream = Stream.of(Arrays.asList(1), Arrays.asList(2, 3), Arrays.asList(4, 5, 6));List integerList = inputStream.flatMap((childList) -> childList.stream()).collect(Collectors.toList());//将一个"二维数组"flat为"一维数组"integerList.forEach(System.out::println);
filter方法

filter方法用于过滤Stream中的元素,并用符合条件的元素生成一个新的Stream。
filter方法接受的参数是Predicate接口对象,这个接口是一个函数式接口:

Stream filter(Predicate) predicate;@FunctionInterfacepublic interface Predicate   {    // 判断元素是否符合条件    boolean test(T t);}

使用

// 获取当前Stream所有偶数的序列Stream ns = Stream.of(1, 2, 3, 4, 5);ns.filter(n -> n % 2 == 0).forEach(System.out::println);
limit、skip

limit用于限制获取多少个结果,与数据库中的limit作用类似,skip用于排除前多少个结果。

sorted

sorted函数需要传入一个实现Comparator函数式接口的对象,该接口的抽象方法compare接收两个参数并返回一个整型值,作用就是排序,与其他常见排序方法一致。

distinct

distinct用于剔除重复,与数据库中的distinct用法一致。

findFirst

findFirst方法总是返回第一个元素,如果没有则返回空,它的返回值类型是Optional类型,接触过swift的同学应该知道,这是一个可选类型,如果有第一个元素则Optional类型中保存的有值,如果没有第一个元素则该类型为空。

Stream stream = users.stream();Optional userID = stream.filter(User::isVip).sorted((t1, t2) -> t2.getBalance() - t1.getBalance()).limit(3).map(User::getUserID).findFirst();userID.ifPresent(uid -> System.out.println("Exists"));
min、max

min可以对整型流求最小值,返回OptionalInt。

max可以对整型流求最大值,返回OptionalInt。

这两个方法是结束操作,只能调用一次。

allMatch、anyMatch、noneMatch

allMatch:Stream中全部元素符合传入的predicate返回 true

anyMatch:Stream中只要有一个元素符合传入的predicate返回 true

noneMatch:Stream中没有一个元素符合传入的predicate返回 true

reduce方法

reduce方法将一个Stream的每一个元素一次作用于BiFunction,并将结果合并。
reduce方法接受的方法是BinaryOperator接口对象。

Optional reduce(BinaryOperator accumulator);@FuncationalInterfacepublic interface BinaryOperator extends BiFunction {    // Bi操作,两个输入,一个输出    T apply(T t, T u);}

使用:

// 求当前Stream累乘的结果Stream ns = Stream.of(1, 2, 3, 4, 5);int r = ns.reduce( (x, y) -> x * y ).get();System.out.println(r);

感谢你能够认真阅读完这篇文章,希望小编分享的"java8中的Stream常用方法有哪些"这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!

方法 元素 接口 类型 函数 对象 数据 篇文章 结果 常用 两个 作用 一致 参数 序列 数据库 数组 条件 流求 排序 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 怎么样把重置虚拟机的数据库 怎么从服务器把java拿下来 四川办公系统软件开发定制费用 开销网络技术有限公司 有网无法连接服务器如何解决 求生之路2怎么看服务器有多少人 数据库中如何设默认值 思科网络技术学院期末考试 合肥企业软件开发多少钱 徐州数据网络技术哪家好 飞机场代理服务器 互联网科技创新孵化中心 我的世界魔戒服务器分享 软件开发哪家大公司好 app程序软件开发 系统数据库范本 服务器网络保存多长时间 网络安全中伪造影响了网络安全的 各省旅游产业数据库 部落冲突客户端跟服务器不同步 如何查找两列中包含的数据库 国外高匿代理服务器 西安软件开发厂招聘 数据库测试工程师面试问题 oracle数据库语录 xx机关网络安全考核办法 网络安全加密技术两个元素 平板app服务器连接失败 mysql数据库怎么传网站 数据库同步技术hdr
0