zoukankan      html  css  js  c++  java
  • 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  ——截断流,使其元素不超过给定数量

       映射:

  • 相关阅读:
    QAU 18校赛 J题 天平(01背包 判断能否装满)
    滚动数组
    Leapin' Lizards HDU
    Sabotage UVA
    Food HDU
    两个Button 加通一个手势,那么 第一个的就失效了,
    终于把聊天记录保存到数据库当中去了,
    添加好友,
    XEP 0055 (Jabber search) with iphone SDK
    手机ip,
  • 原文地址:https://www.cnblogs.com/auldlangsynezh/p/9054122.html
Copyright © 2011-2022 走看看