zoukankan      html  css  js  c++  java
  • 函数式编程

    首先确认什么事函数式编程,也就是只需要关心需要什么,不要关注如何实现。函数式编程更多的是思想上

    举个例子,找一个最小值:

            int[] nums = {1,2,3,4,5,6};
            int min = Integer.MAX_VALUE;
    
            System.out.println("before :" + min);
    
            // 命令式编程
            for(int i: nums){
                if(i < min){
                    min = i;
                }
            }
            System.out.println("after :" + min);
    
            // 函数式编程
            int min2 = IntStream.of(nums).min().getAsInt();
            System.out.println("min2 :" + min2);
    
            // 如果需要开启多线程
            int min3 = IntStream.of(nums).parallel().min().getAsInt();
            System.out.println("min3 " + min3);
        }
    before :2147483647
    after :1
    min2 :1
    min3 1

    lambda匿名函数,可以帮助简化代码,是jdk8加入的强大的功能,解决了长期java被人诟病代码重复的问题,定义一个方法接口,里面一般只有一个方法,因此我们在定义接口是,可以尽量接口单一,可以通过继承方式来实现多接口,lambda表达式帮助我们返回一个接口的实例,可以直接使用进行调用,同时jdk8加入新特性,也就是可以定义默认方法,一般接口的所有方法必须全部实现,使用默认方法可以无需实现,这样如果需要修改接口的话,直接添加默认方法,其实现类照样可以正常运行

    @FunctionalInterface
    interface DoubleNum{
        int doubleNum(int i);
    
        default int sum(int x, int y){
            x = this.doubleNum(x);
            return x + y;
        }
    }
    
    public class Lambda {
        public static void main(String[] args) {
            // lambda
            DoubleNum d1 = (i) -> i *2;
    
            // 常用写法
            DoubleNum d2 =  i -> i * 3;
    
            DoubleNum d3 = i -> {
                return i*2;
            };
            System.out.println(d1.doubleNum(2));    // 4
            System.out.println(d1.sum(2, 2));   // 6   
            System.out.println(d2.doubleNum(3));    // 9
            System.out.println(d2.sum(3, 3));   // 12
            System.out.println(d3.doubleNum(4));    // 8
            System.out.println(d3.sum(4, 4));   // 12
        }
    }
  • 相关阅读:
    JS时钟--星期 年 月 日 时 分
    [考试反思]0825NOIP模拟测试30:没落
    [考试反思]0822NOIP模拟测试29:延续
    [考试反思]0821NOIP模拟测试28:沉默
    小奇的仓库:换根dp
    短期Flag
    [考试反思]0820NOIP模拟测试27:幻影
    [考试反思]0819NOIP模拟测试26:荒芜
    0818NOIP模拟测试25——B卷简记
    [模板]tarjan——最后通牒
  • 原文地址:https://www.cnblogs.com/yangshixiong/p/12898707.html
Copyright © 2011-2022 走看看