Java 8新特性

1.底层数据结构发生了改变HashMap  ---------->数组+链表+红黑树 (当某一个链表长度大于 8,并且总容量大于64的时候,就把链表转成了红黑树,好处在于:除了添加以外,其他的效率都高了)

  当然HashSet也就变了,ConcurrentHashMap也就变了,这个之前的默认并发级别是16(concurrentLevel=16),1.7的时候采用的是锁分段机制,1.8以后几乎就没有用了,改成和CAS算法,即无锁算法见源码如图:

内存结构的更新:

● 速度更快

● 代码更少(增加了新的语法Lambda表达式)

● 强大的Stream API

● 便于并行

● 最大化减少了空指针异常 Optional

 

 2.方法引用:若Lambda体中的内容有方法已经实现了,我们可以使用“”方法引用“”(可以理解为方法引用是Lambda表达式的另外一种表现形式)

  主要有三种语法形式:

  对象::实例方法名

  类::静态方法名

  类::实例方法名

注意:Lambda体中调用方法的参数列表与返回值类型,要与函数式接口中的抽象方法的函数列表和返回值类型保持一致!

   若Lambda参数列表中的第一参数是实例方法的调用者,而第二个参数是实例方法的参数时,可以使用ClassName::method

3.构造器引用:

  格式:

ClassName::new

4.数组引用

Type::new

 

 5.Stream ApI 中间操作

  筛选与切片:filter——接受Lambda,从流中排除某些元素。   

  @Test    //内部迭代:迭代操作由Stream API完成

  public void test(){

  //中间操作:不会执行任何操作

  Stream<Employee> stream=employees.stream().

               filter((e)->{

                System.out.println("Stream API的中间操作");

                return e.getAge() > 35;

          });

  //终止操作:一次性执行全部内容,即“”惰性求值“”    

  stream.forEach(System.out::println);

  }

  //外部迭代

  @Test

  public void test2(){

  Iterator<Employee> it=employees.iterator();

  while(it.hasNext()){

    System.out.println(it.next());

  }

  }

  Limit  ——截断流,使其元素不超过给定数量

 

   映射:

 

posted @ 2018-05-18 00:53  auldlangsynezh  阅读(205)  评论(0编辑  收藏  举报