zoukankan      html  css  js  c++  java
  • Java 函数式接口 lambda

    import java.io.Serializable;
    import java.util.ArrayList;
    import java.util.List;
    
    public class Demo1 {
    
        public static void main(String[] args) {
            // 使用lambda表达式,如runnable
            Thread th1 = new Thread(() -> {
                System.out.println("lambda 创建线程"+Thread.currentThread().getName());
            });
            th1.start();
            /* 1、说明:()->{} 这里的()是参数列表,{}是执行主体,->分割参数列表和执行主体
             * 2、那么什么函数可以使用lambda表达式呢?
             *    答:函数式接口。
             * 3、什么是函数式接口?
             *    答:只定义一个抽象方法的接口。比如Runnable、Callable、Comparator
             * 4、如何检查函数式接口?
             *    答:JDK8中提供了@FunctionInterface注解来专门表示函数式接口,用来对接口的声明进行语法检查。
            */
            //自定义函数式接口
            User user1=new User();
            user1.setName("王一");
            user1.setAge(10);
            user1.setSex("女");
            User user2=new User();
            user2.setName("王二");
            user2.setAge(20);
            user2.setSex("男");
            User user3=new User();
            user3.setName("王三");
            user3.setAge(30);
            user3.setSex("女");
            List<User> users=new ArrayList<User>();
            users.add(user1);
            users.add(user2);
            users.add(user3);
            //查询年龄在15-30之间的用户
            List<User> res=User.userFilter(users, user->user.getAge()>15&&user.getAge()<30);
            System.out.println("年龄在15-30之间的用户:"+res);
            //查询性别是女的用户
            List<User> res2=User.userFilter(users, user->user.getSex().equals("女"));
            System.out.println("性别是女的用户:"+res2);
            //查询年龄在15-30之间的用户--泛型
            List<User> res3=FuncInterfaceTWarp.filterT(users,t->((User)t).getAge()>15&&((User)t).getAge()<30);
            System.out.println("年龄在15-30之间的用户--泛型:"+res3);
            //查询性别是女的用户--泛型
            List<User> res4=FuncInterfaceTWarp.filterT(users,t->((User)t).getSex().equals("女"));
            System.out.println("性别是女的用户--泛型:"+res4);
        }
    
    }
    
    
    
    /**
     * 用户实体
     *
     */
    class User implements Serializable{
        
        private static final long serialVersionUID = 1L;
        
        private String name;
        private Integer age;
        private String sex;
        
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public Integer getAge() {
            return age;
        }
        public void setAge(Integer age) {
            this.age = age;
        }
        public String getSex() {
            return sex;
        }
        public void setSex(String sex) {
            this.sex = sex;
        }
        
        @Override
        public String toString() {
            return "User [name=" + name + ", age=" + age + ", sex=" + sex + "]";
        }
        public static List<User> userFilter(List<User> users,FuncInterface funcInterface){
            List<User> res=new ArrayList<User>();
            for(User user:users){
                if(funcInterface.execute(user)){
                    res.add(user);
                }
            }
            return res;
        }
        
    }
    
    /**
     * 定义函数式接口
     * @author Administrator
     *
     */
    @FunctionalInterface
    interface FuncInterface{
        
        boolean execute(User user);
        
    }
    
    /**
     * 定义泛型函数式接口
     *
     */
    @FunctionalInterface
    interface FuncInterfaceT<T>{
        
        boolean execute(T t);
        
    }
    
    /**
     * 定义泛型函数式接口包装类
     *
     */
    class FuncInterfaceTWarp{
        
        public static <T>List<T> filterT(List<T> objs,FuncInterfaceT<T> funcInterfaceT){
            List<T> res=new ArrayList<>();
            for(T t:objs){
                if(funcInterfaceT.execute(t)){
                    res.add(t);
                }
            }
            return res;
        }
    } 
  • 相关阅读:
    第四章 Zookeeper技术内幕
    容器--TreeMap
    算法--红黑树实现介绍(二)
    算法---红黑树实现介绍(一)
    容器--WeakHashMap
    基础-WeakReference
    容器--IdentityHashMap
    容器--EnumMap
    容器--HashMap
    容器--Map和AbstractMap
  • 原文地址:https://www.cnblogs.com/xmqa/p/9115727.html
Copyright © 2011-2022 走看看