java8
YinXinLion
这个作者很懒,什么都没留下…
展开
-
JAVA8-Optional
如何为缺失的值建模 原始的两种方式: Java8中引入了Optional类。java.util.Optional。 变量存在时,Optional类只是对类简单封装。变量不存在时,缺失的值会被建模成一个“空” 的Optional对象,由方法Optional.empty()返回。 Optional.empty()方法是一个静态工厂方法,它返回Optional类的特定单一实例。null和Optional.empty()没啥区别,就是防止出发nullException。 代码中person引用的是Optio原创 2020-11-18 19:08:20 · 223 阅读 · 0 评论 -
JAVA8-接口的默认方法
传统上,Java程序的接口是将相关方法按照约定组合到一起的方式。实现接口的类必须为接口中定义的每个方法提供一个实现,或者从父类中继承它的实现。但是,一旦类库的设计者需要更新接口,向其中加入新的方法,这种方式就会出现问题。例如,给List接口加一个方法,那么所有实现类都需要实现这个方法。 JAVA8为了解决这个问题,引入新的机制,支持在声明方法的同时提供方法。JAVA8允许在接口内声明静态方法。 实现接口的类,如果不显式地提供该方法的具体实现,就会自动继承默认的实现。 List<Integer>原创 2020-11-13 18:29:32 · 465 阅读 · 0 评论 -
JAVA8-Labmda重构与调试
interface Task{ public void execute(); } public static void doSomething(Runnable r){ r.run(); } public static void doSomething(Task a){ a.execute(); } 如果写成这样doSomething(() -> System.out.println("Danger danger!!"));并不清楚用的哪个方法。 可以改写成.原创 2020-11-12 19:47:35 · 218 阅读 · 0 评论 -
JAVA8-并行数据处理
1.将顺序流转换为并行流(生成1 - n,转为并行流) 并行归纳操作 如果想将并行流转为顺序流,可以使用sequential方法。流水线会并行执行,因为最后调用的是它。 最后一次parallel或sequential调用会影响整个流水线。 并行流内部使用了默认的ForkJoinPool,它默认的线程数量就是你的处理器数量。可以通过java.util.concurrent.ForkJoinPool.common. parallelism来改变线程大小 共享可变状态会影响并行流以及并行计算,下面的代码原创 2020-11-10 17:59:13 · 657 阅读 · 0 评论 -
JAVA8-用流收集数据
Collector预定义方法 预定义收集器 1.获取流中元素个数 2.查找流中的最大值和最小值 Collectors.maxBy() Collectors.minBy() Collectors.summingInt Collectors.summingLong Collectors.summingDouble 它可接受一个把对象映射为求和所需int的函数,并返回一个收集器;该收集器在传递给普通的collect方法后即执行我们需要的汇总操作。 计算数值平均数:Collectors.averagi原创 2020-11-06 18:23:46 · 227 阅读 · 0 评论 -
JAVA8-stream
什么是流? 流是Java API的新成员,它允许你以声明性方式处理数据集合(通过查询语句来表达,而不是临时编写一个实现)。流还可以透明的并行处理,你无需写任何多线程代码了原创 2020-10-26 10:56:13 · 68 阅读 · 0 评论 -
JAVA8-Lambda表达式
前言 行为参数化,是将方法作为参数进行传递,可以适应更多的需求变化。 行为参数化中的方法参数,在JDK8之前可以使用匿名累来进行传递,也可以通过一个指定接口实现一个类来进行传递。 总之,行为参数化传递代码有助于应对不断变化的需求。 什么是Lambda表达式 可以把Lambda表达式理解为简洁地表示可传递的匿名函数的一种方式:它没有名称,但它有参数列表、函数主体、返回类型,可能还有一个可以抛出的异常列表。 Lambda表达式可以作为参数传递给方法或者存储在变量中。 Lambda表达式分为三部分、 1.参数原创 2020-10-22 18:34:56 · 1131 阅读 · 1 评论 -
JAVA8-了解新特性
相关概念 1.流处理 java增加了stream Api,可以将链接起来成为一个复杂流水线。 处理流程类似于Linux的这样的命令cat file1 file2 | tr "[A-Z]" "[a-z]" | sort | tail -3 先将file1流和file2流合并再交给tr进行字符处理,处理完的流交给sort排序,最后再取末尾的三行数据。 2.用行为参数化把代码传递给方法 Java8增加了把方法作为参数传递给另一个方法的能力。 Stream API就是构建在通过传递代码使操作行为实现参数化的思想上原创 2020-09-27 18:15:25 · 107 阅读 · 0 评论