摘要:
常见的面试问题 总结一下,在Java程序员的面试中,经常会被问到类似这样的问题: Java中的函数式接口是什么意思? 注解 @FunctionalInterface 的作用是什么? 实现一个函数式接口有哪几种方式? lambda表达式和匿名内部类有什么区别? Java中的方法引用有哪几种形式? 能说 阅读全文
摘要:
写在前面 在本系列文章的第一篇,我们提到了函数式编程的优点之一是“易于并发编程”。 Java作为一个多线程的语言,它通过 Stream 来提供了并发编程的便利性。 题外话: 严格来说,并发和并行是两个不同的概念。 “并发(Concurrency)”强调的是在同一时间开始执行多个任务,通常会涉及多线程 阅读全文
摘要:
写在前面 Stream 的 Map-Reduce 操作是Java 函数式编程的精华所在,同时也是最为复杂的部分。但一旦你啃下了这块硬骨头,那你就真正熟悉Java的函数式编程了。 如果你有大数据的编程经验,你会对术语 Map-Reduce 十分熟悉亲切。如果你不熟悉大数据编程,也无所谓,通过本文的学习 阅读全文
摘要:
写在前面 如果说函数式接口和lambda表达式是Java中函数式编程的基石,那么stream就是在基石上的最富丽堂皇的大厦。 只有熟悉了stream,你才能说熟悉了Java 的函数式编程。 本文主要介绍Stream的基础概念和基本操作,让大家对Stream有一个初步的理解。 本文的示例代码可从git 阅读全文
摘要:
写在前面 随着Java 8引入了函数式接口和lambda表达式,Java 8中的集合框架(Java Collections Framework, JCF)也增加相应的接口以适应函数式编程。 本文的目标是带领大家熟悉Java 8中集合框架新增的常用接口,让我们的代码更简洁、更高级。 本文的示例代码可从 阅读全文
摘要:
写在前面 我们已经知道,lambda表达式是一个匿名函数,可以用lambda表达式来实现一个函数式接口。 很自然的,我们会想到类的方法也是函数,本质上和lambda表达式是一样的,那是否也可以用类的方法来实现一个函数式接口呢?答案是可以的。我们称之为方法引用(method reference)。 本 阅读全文
摘要:
写在前面 lambda表达式是一个匿名函数。在Java 8中,它和函数式接口一起,共同构建了函数式编程的框架。 lambda表达式乍看像是匿名内部类的一种语法糖,但实际上,它们是两种本质不同的事物。匿名内部类本质是一个类,只是不需要程序员显示指定类名,编译器会自动为该类取名。而 lambda 表达式 阅读全文
摘要:
写在前面 前面说过,判断一门语言是否支持函数式编程,一个重要的判断标准就是:它是否将函数看做是“第一等公民(first-class citizens)”。函数是“第一等公民”,意味着函数和其它数据类型具备同等的地位——可以赋值给某个变量,可以作为另一个函数的参数,也可以作为另一个函数的返回值。 Ja 阅读全文
摘要:
写在前面 从Java 8开始,Java语言添加了lambda表达式以及函数式接口等新特性。这意味着Java语言也开始逐步提供函数式编程的能力。 事实上,如果你熟悉Erlang、Scala、JavaScript或Python,那你或多或少对函数式编程相对熟悉。但如果你是一个通过常规路径学习的Javae 阅读全文