Java中的Lambda函数

lambda表达式的一些简单例子

x -> 3 * x 
//接收一个数字类型的参数,返回其3倍的值
(x, y) -> x – y  
//接收2个数字参数,并返回他们的差值
(String s) -> System.out.print(s)
//接受一个 string 对象,并在控制台打印,不返回任何值

Lambda在语法上通常包含了一个参数列表 (argument list), 一个箭头符号 -> 和函数体 (body) 。函数体可以是一个表达式也可以是一个声明语句。在表达式中, 函数体被计算并且返回。在函数体中的计算类似于在方法中,return关键字会把控制权交给匿名函数的调用者;break和continue只能使用在循环(loop)中;如果函数体需要计算出一个结果,函数内每一条逻辑路径必须提供一个返回值或者抛出异常。

在实际运用中使用lambda表达式
假设有一个玩家List ,程序员可以使用 for 语句来遍历

String[] atp = {"Mike", "Bob",  "lily",  "David", "Andy"};  
List<String> players =  Arrays.asList(atp);  
  
// 以前的循环方式  
for (String player : players) {  
     System.out.print(player + "; ");  
}  
  
// 使用 lambda 表达式以及函数操作
players.forEach((player) -> System.out.print(player + "; "));  
   
// 在 Java 8 中使用双冒号操作符
players.forEach(System.out::println);

使用Lambdas排序集合

String[] players = {"Mike", "Bob",  "lily",  "David", "Andy"};
   
//使用匿名内部类根据 name 排序 players
Arrays.sort(players, new Comparator<String>() {  
    @Override  
    public int compare(String s1, String s2) {  
        return (s1.compareTo(s2));  
    }  
});

//使用 lambda expression 排序 players
Comparator<String> sortByName = (String s1, String s2) -> (s1.compareTo(s2));  
Arrays.sort(players, sortByName);

//或者
Arrays.sort(players, (String s1, String s2) -> (s1.compareTo(s2)));
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • lambda表达式(又被成为“闭包”或“匿名方法”)方法引用和构造方法引用扩展的目标类型和类型推导接口中的默认方法...
    183207efd207阅读 5,321评论 0 5
  • 前段时间一直在看lambda表达式,但是总感觉吃不透,在深入了解lambda表达式的时候,需要很多基础的知识栈。这...
    西瓜真好吃丶阅读 7,604评论 0 7
  • 注:之前关于Java8的认知一直停留在知道有哪些修改和新的API上,对Lambda的认识也是仅仅限于对匿名内部类的...
    mualex阅读 7,818评论 1 4
  • 函数和Lambda表达式 Kotlin对Java的存粹的面向对象进行了弥补,增加了函数式编程的支持,提高了编程的灵...
    JamFF阅读 5,049评论 1 2
  • 近期短视频领域可谓掀起了一场腥风血雨,内涵段子被封,抖音屏蔽评论功能,微信QQ暂停打开短视频链接等等。 作为近期快...
    c3569eca62db阅读 4,489评论 0 1