zoukankan      html  css  js  c++  java
  • Java8学习

    1.Lambda

    可定义为一种简洁、可传递的匿名函数,Lambda本质上是一个函数,虽然它不属于某个特定的类,但具备参数列表、函数主体、返回类型,甚至能够抛出异常

    Lambda是匿名的,它没有具体的函数名称

    Lambda允许把函数作为一个方法的参数(函数作为参数传递进方法中)

    很明显 "->"箭头是lambda的特征

    代码示例:

    (String str) -> str.length() //返回给定字符串的长度(隐含return语句)
    
    () -> 233  //始终返回233的无参方法(隐含return语句)
    
    
    (User user) -> user.getAge() > 20 //返回当前用户是否年龄大于20岁,返回一个boolean值(隐含return语句)
    
    
    // 包含多行表达式,需用花括号括起来,并使用return关键字返回
    
    (int x, int y) -> {
        int z = x*y;
       return x + z;
    
    } 

     使用Lambda与传统写法对比:

    //使用Lambda
    Runnable r1 = () -> System.out.println("Hello world 1");

    传统匿名类:

     

     

     

     

     

     

     3.流失Java8引入的全新概念,它用来处理集合中的数据,暂且可以把它理解为一种高级集合

     

     流的特点:

    1.只能遍历一次

    2.采用内部迭代方式:

    若要对集合进行处理,则需要我们手写处理代码,这就叫外部迭代

    而要对流进行处理,我们只需要告诉流我们需要什么结果,处理过程由流自行完成,这就成为内部迭代

    流的操作过程:

    分为:中间操作和终端操作

    中间操作:当数据源中的数据上了流水线后,这个过程对数据进行的所有操作都称为“中间操作"。中间操作仍然会返回一个流对象,因此多个中间操作可以串起来形成一个流水线

    终端操作:当所有的中间操作完成后,若要将数据从流水线上拿下来,则需要执行终端操作,终端操作将返回一个执行结果,这就是你想要的数据。

    流的具体使用过程:1.准备一个数据源;2.执行中间操作;中间操作可以有多个,它们可以串连起来形成流水线;3.执行终端操作  执行终端操作后本次流结束,你将获得一个执行结果

     Stream 接口:

    List转Stream:

    list.stream() // 转stream

    // 并发处理

    list.parallelStream()

    filter(过滤)

    Stream<T> filter(Predicate<? super T> predicate);

    map(元素转换)

     flatMap(元素转换)

     distinct(去除重复,对象需要重写equals、hashCode)

    Stream<T>  distinct();

    sorted(排序)

     peek(生成新的流:流失单向的,例如用于日志打印)

     

     limit(取前面n个元素)

    skip(跳过n个元素)

     

     forEach(遍历)

     toArray(转换成数组)

     reduce(结果归并)

     

     

     count(计数)

    long  count()

     

     

    ///////////////////////////////////////////////////////////////////////////

    Stream在使用之前,先要获取:数据源有多种形式:

    1.集合:

     

     

     Java7简化了IO操作,把打开IO操作放在try后的括号中即可省略关闭IO的代码

    映射:

    对流中的每个元素执行一个函数,使得元素转换成另一种类型输出,流会将每一个元素输送给map函数,并执行map中的lambda表达式,最后将执行结果存入到一个新的流中

    归约:归约是将集合中的所有元素经过指定运算,折叠成一个元素输出,如:求最值、平均数等,这些操作都是将一个集合的元素折叠成一个元素输出,在流中,reduce函数能实现归约

     

  • 相关阅读:
    MES取所有部门的函数实例
    MES总结:CBF.Common 文件Net下的有类型转换
    LINQ to SQL 系列 如何使用LINQ to SQL插入、修改、删除数据
    c# abstract抽象类与继承类子类的构造函数_base
    C# 之泛型详解
    MVC6与Asp.net5
    MenuStrip菜单递归
    .net 下的MVCPager
    UVALive5461 UVA615 POJ1308 HDU1325 Is It A Tree?
    UVALive5461 UVA615 POJ1308 HDU1325 Is It A Tree?
  • 原文地址:https://www.cnblogs.com/zhangshitong/p/13601406.html
Copyright © 2011-2022 走看看