• lambda表达式的学习使用


    package com.example.demo;
    
    import java.util.ArrayList;
    import java.util.List;
    import java.util.stream.Stream;
    
    /**
     * lambda的测试
     * lambda表达式无法单独出现,它是函数式接口的实现
     * 函数式接口:一个接口中只含有一个方法,可在接口上加注解@FunctionalInterface(不是必须)
     */
    public class LambdaTest {
        public static void main(String[] args) {
            /**
             * 1.lambda基本语法
             * ()->单行代码语句
             * (param)-单行代码语句,param为参数
             * ()->{多行代码语句}
             * (param)->{多行代码语句},param为参数
             */
            Runnable runnable = () -> System.out.println("执行了run方法!");
            Runnable runnable1 = () -> {
                System.out.println("测试测试");
                System.out.println("测试测试");
            };
            //new Thread(runnable).start();
            //new Thread(runnable1).start();
    
            /**
             * 2.方法引用
             * 当方法体中的代码过长,影响代码阅读性时,可用方法引用
             * 静态方法,ClassName::MethodName,例:Object::equals
             * 实例方法,Intance::MethodName,例:Object obj=new Object();obj::MethodName
             * 构造方法,ClassName::new
             */
            Runnable runnable2 = LambdaTest :: run;
            //new Thread(runnable2);
    
            /**
             * 3.集合中内部迭代
             */
            List<User> users = new ArrayList<>();
            users.add(new User("jack",22));
            users.add(new User("tom",18));
            users.forEach((User u)-> System.out.println(u.getName() + ":" + u.getAge()));
    
            /**
             * 4.Stream(流) API
             * 中间方法返回的永远是Stream
             * 最终方法返回的最终结果
             */
            Stream<User> stream = users.stream();
            //过滤大于age大于20的,filter为中间方法
            //stream.filter((User u) -> u.getAge() > 20);
    
            //所有的年龄大于20岁的User对象,转换为字符串50对象。现在流中只有字符串对象了。map为中间方法
            //stream.filter((User u) -> u.getAge() > 20).map((User u)->{return "50";});
    
            //返回流中的元素个数,count为最终方法
            Long count = stream.filter((User u) -> u.getAge() > 20).map((User u)->{return "50";}).count();
            System.out.println(count);
        }
    
        public static void run(){
            System.out.println("执行了执行了该方法");
        }
    
        public LambdaTest(){
            System.out.println("执行了构造方法");
        }
    
    }
    
    class User{
        private String name;
        private Integer age;
    
        public User(String name, Integer age){
            this.name = name;
            this.age = age;
        }
    
        public String getName(){
            return name;
        }
        public Integer getAge(){
            return  age;
        }
    }
  • 相关阅读:
    VirtualBox4.3.12 安装ubuntu 14.04 分辨率过小(600*480)问题的解决方法
    asp.net 权限管理系统
    rdlc 格式设置
    Could not load file or assembly 'Microsoft.ReportViewer.Common, Version=11.0.0.0 异常处理
    Asp.Net Web Forms/MVC/Console App中使用Autofac
    Mysql优化小记1
    Zyan 一个通信框架
    RDLC
    通过.NET客户端异步调用Web API(C#)
    ECharts问题--散点图中对散点添加点击事件
  • 原文地址:https://www.cnblogs.com/jcb1991/p/13391887.html
Copyright © 2020-2023  润新知