zoukankan      html  css  js  c++  java
  • 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;
        }
    }
  • 相关阅读:
    Access-自定义控件TabControl
    Excel公式-求最低价网站名字
    Excel图表-太极图
    Excel图表-"DNA"图
    VB中的GDI编程-2 画笔
    leetcode
    leetcode
    leetcode
    leetcode
    leetcode
  • 原文地址:https://www.cnblogs.com/jcb1991/p/13391887.html
Copyright © 2011-2022 走看看