
Java8新特性
Java8新特性
猿敲月下码
开源软件作者
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
一起来学Java8(九)——CompletableFuture
同步异步 计算机技术发展迅猛,不管是在软件还是硬件方面都发展的非常快,电脑的CPU也在更新换代,强劲的CPU可以承担更多的任务。如果程序一直使用同步编程的话,那么将会浪费CPU资源。举个列子,一个CPU有10个通道,如果所有程序都走一个通道,那么剩余9个通道都是空闲的,那这9个通道都浪费掉了。 如果使用异步编程,那么其它9个通道都可以利用起来了,程序的吞吐量也上来了。也就是说要充分利用CPU资源,...原创 2020-03-22 08:44:57 · 641 阅读 · 1 评论 -
一起来学Java8(八)——ForkJoin
在一起来学Java8(七)——Stream中我们了解了reduce的用法,其中并行流的底层是使用了分支/合并框架。 分支/合并框架的核心思想是把一个大的任务拆分成多个子任务,然后把每个子任务的执行结果整合起来,返回一个最终结果。 ForkJoinPool 分支/合并框架的核心类是java.util.concurrent.ForkJoinPool,从名称中可以看到它是一个线程池,线程数量是默认处理器...原创 2020-02-27 10:51:19 · 1797 阅读 · 0 评论 -
一起来学Java8(七)——Stream(下)
在一起来学Java8(七)——Stream(中)我们学习了Stream.collect的用法,今天我们来学习下Stream.reduce的用法。 reduce操作可以理解成对Stream中元素累计处理,它有三个重载方法。 重载1:Optional<T> reduce(BinaryOperator<T> accumulator); 重载2:T reduce(T identi...原创 2019-11-13 11:46:36 · 397 阅读 · 0 评论 -
一起来学Java8(七)——Stream(中)
在一起来学Java8(七)——Stream(上)中我们了解到了Stream对象的常用方法以及用法。现在一起来深入了解下Stream.collect()方法的使用 collect基本用法 collect意思为收集,它是对Stream中的元素进行收集和归纳,返回一个新的集合对象。先来看一个简单例子: public class CollectTest { @Data @AllArgsConstru...原创 2019-11-13 11:44:56 · 401 阅读 · 0 评论 -
一起来学Java8(七)——Stream(上)
从Java8开始,新增了一个java.util.stream包,这个包下的类和接口用来处理集合中的元素,在这个包下面有一个Stream接口,我们主要使用这个接口来对集合进行操作。 创建Stream 首先来看下创建Stream有哪几种方式。 使用Stream自带的静态方法生成Stream对象,常见的静态方法有以下几个: Stream.of(T) Stream.of(T… values) Strea...原创 2019-11-12 08:59:37 · 1092 阅读 · 0 评论 -
一起来学Java8(六)——Optional
Optional类是Java8新增的一个类,其作用可以有效避免空指针异常。 Optional类的代码比较简单,很容易就能看懂,其实质就是一个辅助类,把需要处理的对象做了一层包装,然后再使用Optional中的方法时,可以有效得判断处理对象是否为空,从而做出正确判断。 接下来我们看下如何使用Optional。 创建Optional 创建Optional有3种方式: Optional.empty()...原创 2019-11-11 09:57:50 · 674 阅读 · 0 评论 -
一起来学Java8(五)——接口默认方法
Java8新加入一个特性,允许在接口方法中给定一个默认实现。前提是在方法前面加一个default关键字。 public interface InterfaceMethod { default void say() { System.out.println("hello"); } default int getAge() { return 1; } } 这种设计看起来是有点违背...原创 2019-11-08 17:18:35 · 1441 阅读 · 0 评论 -
一起来学Java8(四)——复合Lambda
在一起来学Java8(二)——Lambda表达式中我们学习了Lambda表达式的基本用法,现在来了解下复合Lambda。 Lambda表达式的的书写离不开函数式接口,复合Lambda的意思是在使用Lambda表达式实现函数式接口抽象方法后,还可以再次调用接口的其它方法,因为从Java8开始,接口中可以包含默认实现的方法。关于接口默认实现方法将会在后面章节详细阐述。 常见的复合Lambda常见的有以...原创 2019-11-07 09:07:11 · 799 阅读 · 0 评论 -
一起来学Java8(三)——方法引用
在一起来学Java8(一)——函数式编程中有一个简单的函数式编程的例子: import java.util.function.Consumer; class Person { public static void sayHello(String name) { System.out.println("hello " + name); } } public cla...原创 2019-11-06 15:12:38 · 271 阅读 · 0 评论 -
一起来学Java8(二)——Lambda表达式
Lambda简介 什么是Lambda表达式,简单的说是一种匿名函数表达方式。因此Lambda表达式本质是个函数,只不过没有函数名称。 Lambda表达式具有以下特点: 匿名,它没有函数名称 本质是个函数,除了函数名,它有参数列表、函数内容(方法体)、返回类型 简洁,有时候可以省略参数的类型 可传递,Lambda表达式可以当做一个变量进行存储 Lambda的基本语法是: (参数列表) ->...原创 2019-11-06 15:11:08 · 283 阅读 · 0 评论 -
一起来学Java8(一)——函数式编程
在这篇文章中,我们将了解到在Java8下如何进行函数式编程。 函数式编程 所谓的函数式编程就是把函数名字当做值进行传递,然后接收方拿到这个函数名进行调用。 首先来看下JavaScript如何进行函数调用 var Person = { sayHello: function(name) { alert('hello ' + name); } }; function w...原创 2019-11-06 15:06:19 · 432 阅读 · 0 评论