JDK 1.8 Lamda表达式

Java8最值得学习的特性就是Lambda表达式和Stream API,如果有用过Scala语言,对理解Lambda表达式有很大帮助.

lambda写的好可以极大的减少代码冗余,同时可读性也好过冗长的内部类,匿名类。

什么是Lambda编程模式?

简单来讲,就是有面向对象的Java程序员,改用函数式编程的方法来工作.

之前我们想要将行为传入函数,仅有的选择就是匿名内部类。Java8发布以后,lambda表达式将大量替代匿名内部类的使用,简化代码的同时,更突出了原来匿名内部类中最重要的那部分包含真正逻辑的代码。

01 接口实现替代匿名内部列

  1. 之前的写法
public class TestLambda {
    interface LamInterface {
        public void say(String content);
    }

    public static void main(String[] args) {
        LamInterface face = new LamInterface() {
            @Override
            public void say(String content) {
                System.out.println(content);
            }
        };
        face.say("hello");
    }
}
  1. lambda表达式写法
public class TestLambda {
    interface LamInterface {
        public void say(String content);
    }

    public static void main(String[] args) {
        LamInterface face = (String content) -> System.out.println(content);
        face.say("hello");
}

02 集合的迭代

  1. 之前的方式
public class TestLambda {

    public static void main(String[] args) {

        List> lists = new ArrayList<>();
        // 初始化
        for (int i = 0; i < 10; i++) {
            List list = new ArrayList<>();
            lists.add(list);
        }

        // 添加数据
        for (List list : lists) {
            for (int i = 0; i < 10; i++) {
                list.add(i + "");
            }
        }
        // 迭代数据
        for (List list : lists) {
            for (String s : list) {
                System.out.print(s);
            }
        }
    }

}
  1. lamda表达式方式
public class TestLambda {
    public static void main(String[] args) {
        List> lists = new ArrayList<>();
        // 初始化
        for (int i = 0; i < 10; i++) {
            List list = new ArrayList<>();
            lists.add(list);
        }

        // 添加数据
        for (List list : lists) {
            for (int i = 0; i < 10; i++) {
                list.add(i + "");
            }
        }
        // 迭代数据
        lists.forEach(strlists -> {
            strlists.forEach(str -> System.out.println(str));
        });
    }
}

你可能感兴趣的:(JDK 1.8 Lamda表达式)