2024年java基础笔记08类

java基础笔记08类这种编程方式不再关注如何实现 而关注要做什么 Java8 使用 default 方法 来实现在不改变原有接口的情况下对流进行支持 使用的流的好处在于 这种机制使得编写的代码可读性更强 也更能利用多核处理器 的优势 另外 流是懒加载 的 这代表着它只在绝对必要时 才计算 挺像我看 Effective Java 里推荐过的一种创建者模式的感觉 感觉就是对象的内容不重要 而对其的操作比较很重要

大家好,我是讯享网,很高兴认识大家。



  这种编程方式不再关注如何实现,而关注要做什么,Java8使用default方法来实现在不改变原有接口的情况下对流进行支持。使用的流的好处在于,这种机制使得编写的代码可读性更强,也更能利用多核处理器的优势,另外,流是懒加载的。这代表着它只在绝对必要时才计算。

(挺像我看Effective Java里推荐过的一种创建者模式的感觉)

感觉就是对象的内容不重要,而对其的操作比较很重要。

对流的操作分为创建、中间操作和终端操作。

流的创建:

 可以使用System.of()将某组元素转化成流

每个集合也可以调用stream()方法产生一个流。

流的map方法是产生一种映射关系,如果不声明为哪种类型(比如使用mapToInt,将其包装成Integer),则返回参数类型的流。如果需要返回某元素的流,可以使用flatmap()函数

这种写循环的方式有一点妙啊!

Stream. 以种子(第一个参数)开头,并将其传给方法(第二个参数)。方法的结果将添加到流,并存储作为第一个参数用于下次调用 , 只能记忆结果。

(那个过滤和限定操作确实不错诶)

正则表达式: 中增加了一个新的方法 。这个方法可以根据传入的公式将字符序列转化为流。

中间操作:

操作的目的是帮助调试。它允许你无修改地查看流中的元素。

 :以某种方式排序,可以传入一个Comparator 参数来设定排序规则。

:消除流中的重复元素。

过滤操作会保留与传递进去的过滤器函数计算结果为 元素。

将函数操作应用在输入流的元素中,并将返回值传递到输出流中。

 :将产生流的函数应用在每个元素上(与 所做的相同),然后将每个流都扁平化为元素,因而最终产生的仅仅是元素。

map产生的是元素流的流,而flatmap将流扁平化为的是元素。

Optional类:

一些标准流操作返回 Optional 对象,因为它们并不能保证预期结果一定存在。

  • 返回一个包含第一个元素的 Optional 对象,如果流为空则返回 Optional.empty
  • 返回包含任意元素的 Optional 对象,如果流为空则返回 Optional.empty
  • 返回一个包含最大值或者最小值的 Optional 对象,如果流为空则返回 Optional.empty

    不再以 形式开头,而是将其返回值包装在 Optional 中。( 对象成为其他形式的 的默认结果,因此不存在空结果的风险)

便利函数:

  • :当值存在时调用 Consumer,否则什么也不做。
  • java基础笔记08类:如果值存在则直接返回,否则生成 otherObject
  • :如果值存在则直接返回,否则使用 Supplier 函数生成一个可替代对象。
  • :如果值存在直接返回,否则使用 Supplier 函数生成一个异常。

创建Optional:

  • 生成一个空 Optional
  • 将一个非空值包装到 Optional 里。
  • 针对一个可能为空的值,为空时自动生成 Optional.empty,否则将值包装在 Optional 中。

对Optional的操作:

  • :将 Predicate 应用于 Optional 中的内容并返回结果。当 Optional 不满足 Predicate 时返回空。如果 Optional 为空,则直接返回。
  • :如果 Optional 不为空,应用 Function  于 Optional 中的内容,并返回结果。否则直接返回 Optional.empty
  • :同 ,但是提供的映射函数将结果包装在 Optional 对象中,因此 不会在最后进行任何包装。

创建Optional流:

  用map映射为Optional,解包时再用get获取。

创建
解包

终端操作:

  1. 转化为数组:

    将流转换成适当类型的数组。

    在特殊情况下,生成器用于分配自定义的数组存储。

  2. 应用最终操作:

    内循环

    保证 按照原始流顺序操作。

  3. 容器:

    使用 Collector 收集流元素到结果集合中。

    同上,第一个参数 Supplier 创建了一个新结果集合,第二个参数 BiConsumer 将下一个元素包含到结果中,第三个参数 BiConsumer 用于将两个值组合起来。

  4. 组合所有流元素:

    :使用 BinaryOperator 来组合所有流中的元素。因为流可能为空,其返回值为 Optional

    :功能同上,但是使用 identity 作为其组合的初始值。因此如果流为空,identity 就是结果。

    :这个形式更为复杂(所以我们不会介绍它),在这里被提到是因为它使用起来会更有效。通常,你可以显式地组合 和 来更简单的表达它。

  5. 匹配:

    如果流的每个元素根据提供的 Predicate 都返回 true 时,结果返回为 true。这个操作将会在第一个 false 之后短路;也就是不会在发生 false 之后继续执行计算。

    如果流中的任意一个元素根据提供的 Predicate 返回 true 时,结果返回为 true。这个操作将会在第一个 true 之后短路;也就是不会在发生 true 之后继续执行计算。

    如果流的每个元素根据提供的 Predicate 都返回 false 时,结果返回为 true。这个操作将会在第一个 true 之后短路;也就是不会在发生 true 之后继续执行计算。

  6. 元素查找:

    返回一个含有第一个流元素的 Optional,如果流为空返回 Optional.empty

    返回含有任意流元素的 Optional,如果流为空返回 Optional.empty

  7. 信息:

    流中的元素个数。

    根据所传入的 Comparator 所决定的“最大”元素。

    根据所传入的 Comparator 所决定的“最小”元素。

  8. 数字流信息:

    求取流元素平均值。

    和 :因为这些操作在数字流上面,所以不需要 Comparator

    对所有流元素进行求和。

小讯
上一篇 2024-12-28 21:29
下一篇 2025-01-01 22:09

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/7167.html