JavaRush /Java 博客 /Random-ZH /喝咖啡休息#150。让我们研究一下 Java 中 lambda 表达式的示例。IntelliJ IDEA 7 个最...

喝咖啡休息#150。让我们研究一下 Java 中 lambda 表达式的示例。IntelliJ IDEA 7 个最被低估的功能

已在 Random-ZH 群组中发布

Java lambda 表达式的学习示例

来源: Medium 在本文中,我们将了解 lambda 表达式,它是 Java 函数式编程的基础。 喝咖啡休息#150。 让我们研究一下 Java 中 lambda 表达式的示例。 IntelliJ IDEA 7 个最被低估的功能 - 1

Lambda 表达式语法

lambda 表达式的语法直观、易于理解且易于使用。lambda 表达式由以下部分组成:
  1. 输入参数
  2. 运算符箭头
  3. 表达式/语句块
一般格式为:
<input-params> -> <function-code>

lambda 表达式的示例

Lambda 表达式最好通过示例来理解,所以让我们看一下其中的一些示例。

1.不接受输入,不返回输出

简单的 lambda 表达式不接受任何输入,也不返回任何输出——它实际上只是一个在没有任何上下文的情况下运行的代码块。
() -> System.out.println("Here I am!");
在输入参数位置的开头指定 ( )意味着不传递任何参数(与没有参数的方法后面的空括号一样)。

2. 接受单个输入,不返回输出

为了使 lambda 表达式接受参数,我们将其放置在输入参数位置:
name -> System.out.println("Here you are too, " + name +  "!");
笔记:如果我们有一个输入参数,我们可以省略括号。我们也可以指定(name),这是完全可以接受的。

3.接受多个输入,不返回输出

当我们将多个输入参数传递给 lambda 表达式时,我们必须:
  • 将参数括在括号中
  • 使用逗号分隔它们
(name, food) -> System.out.println("So " + name + " enjoys eating " + food + "... interesting!");

4. 一个代码段中包含多个语句

将 lambda 表达式存储在一行语句中被认为是一种良好的做法。但您也可以使用多行:
() -> {
  System.out.println("The owl and the pussycat went to sea");
  System.out.println("in a beautiful pea green boat");
}

5. 从不指定返回类型

您可能已经注意到,定义 lambda 表达式时,没有指定返回类型。这是一个例子:
() -> System.out.println("I don't return anything!")
还有一件事:
() -> "I return this String!"
两个代码示例几乎相同,但第二个 lambda 返回一个字符串。使用它们时请记住这一点。当然,编译器会通过函数描述符的条件使用来理解它们之间的区别。

6. 尽可能自动应用类型推断

为了确定类型,编译器将使用类型推断。为此,它会查看 lambda 表达式的执行上下文。对于开发人员来说,这意味着他们不必担心转换为特定类型。

7. 函数描述符表示法

当我们考虑 lambda 表达式可以分配给什么类型时,使用函数描述符非常有用。函数句柄本质上是 lambda 表达式(或方法)提供的方法签名。它的语法几乎与 lambda 表达式相同,只是有一个输出类型部分而不是代码部分。这是一个例子:
<input-parameter-types> -> <output-parameter-type>

函数描述符的示例

以下是函数描述符的一些示例: () -> () 不带输入参数且不返回值的方法。 (String) -> () 接受输入参数但不返回值的方法。 () -> (int, float) 一种不带输入参数并返回intfloat(int[]) ->的方法。 (SortedMap<Character, Integer>) 方法,采用int数组并返回从CharacterInteger的SortedMap。在考虑可用于 lambda 表达式的目标类型时,拥有函数描述符可以更轻松地评估类型兼容性。

结论

正如您所看到的,lambda 表达式是一种简洁明了的行为封装方式。它是随着 JDK 8 的发布而在 Java 中引入的函数式编程范式的基础之一。

IntelliJ IDEA 7 个最被低估的功能

资料来源: Better Programming 很难相信,但多年后我仍然遇到不了解 IntelliJ IDEA 中这些强大功能的人。

1.找到任何东西

记住每个组合键并跟踪 IntelliJ IDEA 可以执行的所有操作非常困难。这就是我经常在 IntelliJ IDEA 中使用搜索的原因。这可以帮助我在一个地方找到我需要的菜单项、工具、设置,甚至文件。 喝咖啡休息#150。 让我们研究一下 Java 中 lambda 表达式的示例。 IntelliJ IDEA 7 个最被低估的功能 - 2

2. 知道你在哪里

在我发现这个功能之前,我使用“选择打开文件”按钮在项目树中显示当前编辑的文件。 喝咖啡休息#150。 让我们研究一下 Java 中 lambda 表达式的示例。 IntelliJ IDEA 7 个最被低估的功能 - 3现在 IntelliJ IDEA 为我做到了。这不是默认选项,因此您需要为每个新项目或现有项目进行设置。 喝咖啡休息#150。 让我们研究一下 Java 中 lambda 表达式的示例。 IntelliJ IDEA 7 个最被低估的功能 - 4

3. SQL优化

您是否知道 IDE 中的默认数据库插件不仅仅是一个简单的 SQL 执行器?鉴于持久层 (I/O) 始终是应用程序中最慢的部分,我始终确保在使用关系数据库时我的 SQL 查询具有良好的执行计划。 喝咖啡休息#150。 让我们研究一下 Java 中 lambda 表达式的示例。 IntelliJ IDEA 7 个最被低估的功能 - 5

4. 多行编辑

您以前可能在 Sublime Text Editor 中使用过此功能。 喝咖啡休息#150。 让我们研究一下 Java 中 lambda 表达式的示例。 IntelliJ IDEA 7 个最被低估的功能 - 6

5. 后退/前进

事实上,我经常通过按后退或前进按钮回到之前的位置。 喝咖啡休息#150。 让我们研究一下 Java 中 lambda 表达式的示例。 IntelliJ IDEA 7 个最被低估的功能 - 7后退/前进:⌥⌘+左/右箭头(对于 Win/Linux,Ctrl+Alt+左/右箭头)。要打开最近的文件,请按 ⌘E(对于 Win/Linux 为 Ctrl+E)。

6. 书签

我为代码的重要部分添加了书签,以便我可以随时快速引用它们。 喝咖啡休息#150。 让我们研究一下 Java 中 lambda 表达式的示例。 IntelliJ IDEA 7 个最被低估的功能 - 8要转到书签,请按 ⌃+<数字>(对于 Win/Linux,按 Ctrl+<数字>)。我会立即说我一次不会使用三个以上的书签,因为这样就很难记住它们的用途。

7. 一个编辑器搞定一切

我曾经打开其他文本编辑器(例如 Visual Studio Code 或 Sublime)来保存部分代码、JSON、XML,然后链接到它们。但这不是代码库(项目)的一部分,当您尝试创建或编辑类似的内容时,IntelliJ IDEA 会清楚地提醒您这一点。然后我看到我的一位同事使用 Snippets,并意识到它是多么天才。 喝咖啡休息#150。 让我们研究一下 Java 中 lambda 表达式的示例。 IntelliJ IDEA 7 个最被低估的功能 - 9新片段文件:⇧⌘N(对于 Win/Linux,Shift+Ctrl+N)。片段可用并在项目的所有窗口之间同步。我经常使用它们来检查和格式化从其他地方获得的一些 JSON 或 SQL。

我的秘方

锦上添花的功能是每天为我节省大量打字时间: Tabnine是一个 JetBrains 插件,用于编译 AI 支持的 Intellij IDEA 代码。现在是免费的,但是快点吧,我认为它不会持续很长时间。
评论
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION