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  ——截断流,使其元素不超过给定数量

       映射:

  • 相关阅读:
    Access restriction: The type * is not accessible due to restrict,报错问题,只试过第二种,OK。
    Java读写Properties文件
    MyBatis学习4---使用MyBatis_Generator生成Dto、Dao、Mapping
    Mybatis 3+Mysql 实现批量插入
    Java访问MySQL数据库的SqlHelper类以及测试程序
    sun.net.ftp.FtpClient(java访问/操作ftp)
    java通过ftp方式读取文件,并解析入库
    Linux CPU 上下文切换
    Perl-DBI
    Perl文件句柄和文件描述符
  • 原文地址:https://www.cnblogs.com/auldlangsynezh/p/9054122.html
Copyright © 2011-2022 走看看