java
远处的海亲吻着天
从事JAVA软件开发
展开
-
java8 Comparator 比较器
在java8之后,comparator 是一个函数式接口,对接口进行了增强(增加了相当多的默认方法)。reversed 倒叙comparing 比较器(comparingInt 、 comparingLong、comparingDouble)thenComparing 之后比较(串联比较),如果第一个比较器确定不了顺序,thenComparing 才会起效果package com...原创 2020-05-06 16:48:07 · 1014 阅读 · 0 评论 -
java8 Stream详解
Stream是什么在探讨探究stream的实现原理和动手实现之前,我们先要体会stream流计算的独特之处。 举个例子: 有一个List<Person>列表,我们需要获得年龄为70岁的前10个Person的姓名。过程式的解决方案: 稍加思考,我们很快就写出了一个过程式的解决方案(伪代码):List<Person> personList = from...原创 2020-05-05 22:25:14 · 999 阅读 · 0 评论 -
java8接口新特性:default、static
java8之前接口中的方法默认类型都是public abstract,也就是抽象方法,具体实现都交给实现类。而java8对接口功能做了增强,增加了default方法和static方法,也就是说从java8开始接口中的方法不再只能是抽象的,也可以有实现。其应用也非常简单,如下面的例子所示,在接口中定义default和static方法:public interface DefaultInter...原创 2020-05-04 22:42:59 · 224 阅读 · 0 评论 -
Java8 方法引用
1、方法引用的使用场景 我们用Lambda表达式来实现匿名方法。但有些情况下,我们用Lambda表达式仅仅是调用一些已经存在的方法,除了调用动作外,没有其他任何多余的动作,在这种情况下,我们倾向于通过方法名来调用它,而Lambda表达式可以帮助我们实现这一要求,它使得Lambda在调用那些已经拥有方法名的方法的代码更简洁、更容易理解。方法引用可以理解为Lambda表达式的另外一种表现形式。...原创 2020-05-04 22:27:52 · 149 阅读 · 0 评论 -
java8 Optional
Optional<T>类(java.util.Optional)是一个容器类,代表一个值存在或不存在,原来用null表示一个值不存在,现在Optional可以更好的表达这个概念。并且可以避免空指针异常。1、of为非null的值创建一个Optional,如果值为null,则会抛出NullPointerExceptionOptional<Integer> opti...原创 2020-05-03 17:18:15 · 138 阅读 · 0 评论 -
Lambda表达式 分析详解
什么是Lambda表达式我们可以把它看成是一种闭包,它允许把函数当做参数来使用,是面向函数式编程的思想,一定程度上可以使代码看起来更加简洁。为何需要Lambda表达式在Java中,我们无法将函数作为参数传递给一个方法,也无法声明返回一个函数的方法。 在JavaScript中,函数参数是一个函数,返回值是另一个函数的情况非常常见的;JavaScript是一们非常典型的函数式语言在ja...原创 2020-05-03 13:56:15 · 746 阅读 · 0 评论 -
JAVA8 Optional
前言身为一名Java程序员,大家可能都有这样的经历:调用一个方法得到了返回值却不能直接将返回值作为参数去调用别的方法。我们首先要判断这个返回值是否为null,只有在非空的前提下才能将其作为其他方法的参数。这正是一些类似Guava的外部API试图解决的问题。一些JVM编程语言比如Scala、Ceylon等已经将对在核心API中解决了这个问题。Optional概述新版本的Java,比如Ja...原创 2020-04-22 22:40:37 · 162 阅读 · 0 评论 -
Java中System.arraycopy()和Arrays.copyOf()的区别
先看看System.arraycopy()的声明:public static native void arraycopy(Object src,int srcPos, Object dest, int destPos,int length);`src - 源数组。srcPos - 源数组中的起始位置。dest - 目标数组。destPos - 目标数据中的起始位置。length - 要复制的数组...转载 2018-02-28 14:15:01 · 315 阅读 · 0 评论 -
AtomicInteger 与 CAS
这个类真的非常实用,更重要的是 它确实非常简单:附上自己的代码,可以自己试试:AtomicInteger,一个提供原子操作的Integer的类。在Java语言中,++i和i++操作并不是线程安全的,在使用的时候,不可避免的会用到synchronized关键字。而AtomicInteger则通过一种线程安全的加减操作接口。 代码:packa转载 2016-12-18 21:53:13 · 575 阅读 · 0 评论 -
Java多线程:Semaphore
信号量(Semaphore),有时被称为信号灯,是在多线程环境下使用的一种设施, 它负责协调各个线程, 以保证它们能够正确、合理的使用公共资源。一个计数信号量,从概念上讲,信号量维护了一个许可集。如有必要,在许可可用前会阻塞每一个 acquire(),然后再获取该许可。每个 release() 添加一个许可,从而可能释放一个正在阻塞的获取者。但是,不使用实际的许可对象,Semaphore 只对可用转载 2016-12-18 22:20:30 · 296 阅读 · 0 评论
分享